PHPDBG 是 PHP 官方 SAPI 模塊,無需修改代碼、零性能損耗即可實現斷點、單步、變量檢查等調試功能。PHP 5.6+ 內置,5.4/5.5 需手動編譯。
eval() 動態執行代碼、查看當前執行上下文# PHP 5.4/5.5 需手動編譯
cd /home/php/sapi
git clone https://github.com/krakjoe/phpdbg
cd ..
./buildconf --force
./config.nice --enable-phpdbg --with-readline # 可選 readline
make -j8
make install-phpdbg
注意:PHP 5.6+ 已內置,編譯時僅需 --enable-phpdbg。
phpdbg -e test.php 或進入交互模式後 exec test.phphelpb test.php:10b func#2(精確到 opcode 級)b Class::methodinfo breakbreak del 1l f func(函數)、l 10(行號)s(step into)c(continue)ev $var = 123; var_dump($var);prompt> b func#2
prompt> r
[Breakpoint #0 in func()#2 at ./test.php:18, hits: 1]
>00018: $param = $param + "baba";
00019: echo "function func $param\n";
prompt> s
[L19 0x152ba70 ZEND_ADD_STRING C2 @0 ./test.php]
>0019: echo "function func $param\n";
prompt> ev $param = "debug";
prompt> c
對比 Xdebug:無需 IDE 配置、無性能開銷、適合生產環境快速排查;對比 GDB:專為 PHP 設計、支持 opcode 級斷點、內置 eval 執行。
PHPDBG 是 PHP 開發者工具箱中的「瑞士軍刀」,值得熟練掌握。