Xdebug Update: May 2022
In this monthly update I explain what happened with Xdebug development in this past month. These are normally published on the first Tuesday on or after the 5th of each month.
Patreon and GitHub supporters will get it earlier, around the first of each month.
You can become a patron or support me through GitHub Sponsors. I am currently 46% towards my $2,500 per month goal. If you are leading a team or company, then it is also possible to support Xdebug through a subscription.
In May, I spend 25 hours on Xdebug, with 27 hours funded.
Development
I continued my exploration of different set-ups that developers use, and have now merged the branch that adds support for the "pseudo-hosts" xdebug://gateway and xdebug://nameserver, which can be used with the xdebug.client_host setting instead of, and in addition to the Docker specific host.docker.internal. This pseudo-host automatically evaluates to the network gateway address, or name server as defined in /etc/resolv.conf, in the container, which will then allow Xdebug to connect to an IDE on the host machine.
I have not figured out how to do it will all different set-ups, so if you have extra information, or if I am still missing set-ups, feel free to comment on the Google Doc.
In the more complicated set-ups, it would likely be easier to use Xdebug Cloud as it has none of these networking complications.
The other big feature that I have worked on is the introduction of the capture of return values while debugging. This feature allows you to step into the "return value from function" phase, where PHP returns a value to the caller function. In this step, there will only be one variable available, which is the return value of that function.
Right now IDEs will have to opt into this new feature, with PhpStorm and the VS Code Plug-in teams confirming that they will make changes for this.
In this GIF you can see how this is useful with fluent interfaces:
Course
I have now recorded the first lesson of the course, and I am editing it with the plan to release this in the next few weeks. It will take a little time, as I need to get into the flow of editing and producing them; and of course, a new web site needs to be constructed as well. Stay tuned!
For further lessons I have started to draft outlines, and they are in different states of completion.
If you want to make sure that the course covers specific tasks that you find hard to do, or what you would like explained, please drop me an email, or leave a comment.
Xdebug Cloud
Xdebug Cloud is the Proxy As A Service platform to allow for debugging in more scenarios, where it is hard, or impossible, to have Xdebug make a connection to the IDE. It is continuing to operate as Beta release. Packages start at £49/month.
If you want to be kept up to date with Xdebug Cloud, please sign up to the mailinglist, which I will use to send out an update not more than once a month.
Xdebug Videos
I have published one new video this month:
You can find all previous videos on my YouTube channel.
Business Supporter Scheme and Funding
In May, no new business 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.
Life Line
I got myself a sheet of Sun-safe filter material, and McGuyvered a pop-up filter for my lens.
The first attempt sort of worked, but I didn't get the filter 100% straight. Luckily I have more material.
But this is sort of my first attempt, and a few sunspots are clearly visible on the right of the image.
Warning: Never look at the Sun without protection!
Go with 2026.02
Improve error messages for `timelib_duration_create_from_iso8601strin…
Fix overflow in the nanosecond carry in `timelib_duration_div_static()`
Consistently use `stdint.h` types for `timelib_duration`
Created 2 recyclings
Created a home entrance and a main entrance
Go with 2026.01
Merged pull request #176
Fix #175: Update Makefile to get the latest version from iana.org site
Merged pull request #184
Added the 'timelib_duration_create_from_iso8601string' implementation
Document the 'static' variants, and correct the original functions' c…
Add overflow detection to `timelib_duration_mul_static()`
Simplify `timelib_duration_sub_static()` for differently-signed inputs
Fix `timelib_duration_add_static()` for opposite signs
Handle normalization of `timelib_duration`’s `negative` in `timelib_d…
Updated a restaurant
I walked 9.8km in 1h41m58s
Use `timelib_duration_null_abs_internal()` in `timelib_duration_mul_s…
Implement 'timelib_duration_sub' and friends
Rename second argument for 'timelib_duration_sub_abs_internal' and do…
Rename timelib_duration_*_internal files to include 'abs' as it opera…
Add definitions for 'static' allocated durations to public header file
Rename 'd' to 'd1' in tests


Shortlink
This article has a short URL available: https://drck.me/xdebug-22may-h5k