Xdebug Update: January 2025
In this monthly update I explain what happened with Xdebug development.
GitHub and Pro/Business supporters will get it earlier, around the first of each month.
In the last month, I spend around 18 hours on Xdebug, with 25 hours funded.
Xdebug 3.4
At the start of the month I released Xdebug 3.4.1, which fixes a few crash bugs when deciding whether to activate a specific feature.
During the rest of the month, I fixed an issue where PHP 8.4's new property hooks would not show their content in the debugger.
Foreach Woes
Besides the Xdebug 3.4 general bug fixes, I have also been looking at addressing a long-standing issue where using foreach produces some unexpected results when doing path and branch coverage. I wrote an article called Figuring Out Foreach to explain the problem.
The fix however is trickier, and I am inclined to roll that up into a big patch that refactors Code Coverage into an analysis pass, and a collection pass. The patch sits in a branch and addresses some other long outstanding inaccuracies.
I recently have rebranched this patch on Xdebug's master again, so it is fully functional (minus the foreach changes), but unfortunately it is a little slower than what currently is available in Xdebug. I might decide to release it with this slight performance degradation in Xdebug 3.5 or 3.6 regardless.
Xdebug Videos
I have created one new video in the last two months:
All Xdebug videos can be watched on my channel.
If you have any suggestions, feel free to reach out to me on Mastodon or via email.
Business Supporter Scheme and Funding
On GitHub sponsors, I am currently 40% towards my $2,500 per month goal, which is set to allow continued maintenance of Xdebug.
If you are leading a team or company, then it is also possible to support Xdebug through a subscription.
In the last month, no new business supporters signed up.
Besides business support, I also maintain a Patreon page, a profile on GitHub sponsors, as well as an OpenCollective organisation.
If you want to contribute to specific projects, you can find those on the Projects page.
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, and I have recently introduced a package for larger companies. This has a larger initial set of tokens, and discounted extra tokens.
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.
Comments
❤️ Derick Rethans likes this post.
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-25jan-jcb