PHP 5.6 was the first version of PHP to ship with phpdbg, an interactive debugger that can be used locally on the command-line as well as remotely via client applications. It is inspired by GDB, the de facto standard for debugging UNIX programs, and can be invoked using the phpdbg command.

When you download PHP 7 from and build the PHP interpreter yourself, phpdbg is not built by default. You need to pass the --enable-phpdbg option to configure to enable it. If you use a package provided by the vendor of your Linux distribution to manage your PHP environment, then you probably need to install a separate package to get the phpdbg binary.

For PHP 7, phpdbg has been expanded with code coverage functionality. This means that you can now collect, process, and report code coverage data with PHPUnit, for instance, without having to install a third-party extension such as Xdebug or PCOV. To use PHP 7’s built-in code coverage functionality with PHPUnit, just invoke PHPUnit using the phpdbg binary instead of the php binary as shown below:

$ phpdbg -qrr phpunit.phar --coverage-clover coverage.xml tests
PHPUnit 9.2.2 by Sebastian Bergmann and contributors.


Time: 00:01.788, Memory: 6.00 MB

OK (44 tests, 70 assertions)

Generating code coverage report in Clover XML format ... done

The -qrr command-line option for the phpdbg invocation shown above instructs phpdbg to execute a script and quit after the execution finished without debugging the PHP code that is executed.