DPC2019: Xdebug 3.0 - Derick Rethans

Discover the latest advancements in Xdebug 3.0, focusing on refactoring and simplifying the codebase to improve performance and reliability.

Key takeaways
  • Xdebug 3.0 focuses on refactoring and simplifying the codebase, which is 17 years old.
  • The quality of an old codebase can degrade over time.
  • Setting up a local CI takes many steps, and there are also issues with configuring the filter.
  • Xdebug’s code coverage functionality is currently slow and can be improved.
  • The step debugger has a bug where it can’t stop on specific line numbers.
  • PHP’s internal changes can affect the output of Xdebug’s tests.
  • The remote handler in Xdebug allows changing the protocol used to communicate with IDEs, but it’s unclear why it’s needed.
  • Xdebug can be improved by dividing its codebase into multiple extensions or separate files.
  • Further testing and work is needed to ensure compatibility with different PHP versions.
  • Code coverage can be improved by making Xdebug only do instrumentation for code that needs it.
  • Networking communications between Docker instances and Xdebug need to be improved.
  • Xdebug can be made faster by using internal PHP data structures.
  • The tracing functionality and profiler could be rolled up into a single setting.
  • Xdebug can be improved to generate faster and more accurate code coverage.
  • The mode debug function can be improved to provide more information about the debug connections.
  • PHP’s internal changes can make it challenging to reproduce issues.
  • Xdebug can be divided into multiple extensions to simplify the codebase.
  • The add operator can be used to disable warnings and errors in the browser.
  • The screen configuration setting can be used to disable the operator.
  • Xdebug’s code coverage can be improved by making it only do instrumentation for code that needs it.
  • Xdebug’s debugging functionality can be improved by reducing the overhead of opcache’s optimizations.
  • Xdebug’s remote logging functionality can provide information about debug connections.
  • Xdebug can be improved by making the step debugger more robust and reliable.
  • Xdebug’s code coverage can be improved by using more efficient algorithms.