Xdebug Update: April 2020
Another monthly update where I explain what happened with Xdebug development in this past month. These will be published on the first Tuesday after the 5th of each month. Patreon supporters will get it earlier, on the first of each month. You can become a patron to support my work on Xdebug. If you are leading a team or company, then it is also possible to support Xdebug through a subscription.
In April, I worked on Xdebug for about 60 hours, on the following things:
Xdebug 2.9.5
The 2.9.5 release addresses a few bugs. One of them was a follow on from the issue where Xdebug would crash when another extension would run code in PHP's Request Init stage, but only on a second or later request in the same PHP process. As this is not something that's easy to catch with PHP's testing framework that Xdebug uses, this issue slipped through the cracks.
The release fixes another bug, where throwing an exception from within a destructor would crash Xdebug. The fix for this was merely making sure that PHP's internal state is still available:
- if (!(ZEND_CALL_INFO(EG(current_execute_data)) & ZEND_CALL_HAS_SYMBOL_TABLE)) {
+ if (EG(current_execute_data) && !(ZEND_CALL_INFO(EG(current_execute_data)) & ZEND_CALL_HAS_SYMBOL_TABLE)) {
Beyond these two crashes, the release also addressed an issue where Xdebug did not always correct catch where executable code could exist for code coverage analyses. Over the last decade, PHP has been getting more and more optimised, with more internal engine instructions. Unfortunately that sometimes means that these are not hooked into by Xdebug, to see whether there could be a line of code that would make use of these opcodes. As this is often very dependent on how developers lay out their code, these issues are often found by them. Luckily, these issues are trivially fixed, as long as I have access to just the file containing that code. I then analyse it with vld to see which opcode (PHP engine instruction) I have missed.
Xdebug 3 and Xdebug Cloud
Most of my time was spend on getting Xdebug Cloud to a state where I can invite select developers to alpha test it. This includes allowing for Xdebug to connect to Xdebug Cloud. There is currently a branch available, but it still lacks the addition of SSL encryption, which is a requirement for allowing safe transport of debug information.
The communications between an IDE and Xdebug through Xdebug Cloud is working, with a few things related to detecting disconnections more reliably still outstanding.
As Xdebug Cloud needs integration in debugging clients (such as PhpStorm, and other IDEs), I have been extending the dbgpProxy tool to act as intermediate link between existing IDEs and Xdebug Cloud without IDEs having to change anything. This work is still ongoing, and is not documented yet, but I hope to finish that in the next week. Once that and SSL support in the Xdebug to Xdebug Cloud communication has been finalized, I will reach out to subscribers of the Xdebug Cloud newsletter to see if anybody is interested in trying it out.
Business Supporter Scheme and Funding
In April, no new supporters signed up.
If you, or your company, would also like to support Xdebug, head over to the support page!
Besides business support, I also maintain a Patreon page and a profile on GitHub sponsors.
Podcast
The PHP Internals News continues its second season. Episodes in the last month included a discussion on PHP 8's JIT engine and increasing complexity, PHP's RFC process, and a discussion with Larry Garfield about how to improve PHP's Object Ergonomics. It is available on Spotify, iTunes, and through an RSS Feed.
Life Line
Survey postbox collection times
Survey housenumbers
Specify whether places take fees to visit
Survey shop types
Specify whether there are cycleways
Specify whether pedestrian crossings have islands
Determine the heights of kerbs
Specify whether traffic signals have tactile indications that it's safe to cross
Specify whether crosswalks have tactile paving
Specify whether kerbs have tactile paving
Specify drinking water types
Survey whether benches have backrests
Determine information board names
Survey tactile paving on steps
Specify whether steps have a ramp
Specify whether steps have handrails
Specify path surfaces
Survey opening hours
Specify whether roads have sidewalks
Specify road surfaces
Created 4 entrances; Updated an apartments building, a house building, and a building
Updated a restaurant
I walked 3.2km in 29m48s
I walked 5.4km in 53m10s
I walked 1.7km in 17m24s

Shortlink
This article has a short URL available: https://drck.me/xdebug-20apr-fkw