We now store the pointer payload and the type mask separately. This is in preparation for union types, where we will be using both at the same time. To avoid increasing the size of arginfo structures, the pass_by_reference and is_variadic fields are now stored as part of the type_mask (8-bit are reserved for custom use). Different types of pointer payloads are distinguished based on bits in the type_mask.
The interactive PHP debugger
Implemented as a SAPI module, phpdbg can exert complete control over the environment without impacting the functionality or performance of your code.
phpdbg aims to be a lightweight, powerful, easy to use debugging platform for PHP 5.4+.
Features
- Stepthrough Debugging
- Flexible Breakpoints (Class Method, Function, File:Line, Address, Opcode)
- Easy Access to PHP with built-in eval()
- Easy Access to Currently Executing Code
- Userland API
- SAPI Agnostic - Easily Integrated
- PHP Configuration File Support
- JIT Super Globals - Set Your Own!!
- Optional readline Support - Comfortable Terminal Operation
- Remote Debugging Support - Bundled Java GUI
- Easy Operation - See Help
Planned
- Improve Everything :)
Installation
To install phpdbg, you must compile the source against your PHP installation sources, and enable the SAPI with the configure command. It is enabled by default:
cd /path/to/php-src
./buildconf --force
./configure
make -j8
./sapi/phpdbg/phpdbg --version
Where the source directory has been used previously to build PHP, there exists a
file named config.nice which can be used to invoke configure with the same
parameters as were used by the last execution of configure.
Note: PHP must be configured with the switch --with-readline for phpdbg to
support history, autocompletion, tab-listing etc.
Command line options
The following switches are implemented (just like cli SAPI):
-nignore php ini-csearch for php ini in path-zload zend extension-ddefine php ini entry
The following switches change the default behaviour of phpdbg:
-vdisables quietness-senabled stepping-esets execution context-bboring - disables use of colour on the console-Iignore .phpdbginit (default init file)-ioverride .phpgdbinit location (implies -I)-Oset oplog output file-qdo not print banner on startup-rjump straight to run-Eenable step through eval()-llisten ports for remote mode-alisten address for remote mode-Soverride SAPI name
Note: Passing -rr will cause phpdbg to quit after execution, rather than
returning to the console.
Getting started
See the website for tutorials/documentation.