1、使用 phpdbg_break_function()来给这个testFunc() 方法设置一个断点。当代码中调用这个函数的时候,就会进入这个断点中。
prompt>r [Breakpoint#0intestFunc()at/Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug互动扩展.php:11,hits:1] >00011:functiontestFunc(){ 00012:global$i; 00013:$i+=3; prompt>s [L120x109eef620EXT_STMT/Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug互动扩展.php] >00012:global$i; 00013:$i+=3; 00014:echo"ThisistestFunc!i:".$i,PHP_EOL; prompt>s [L120x109eef640BIND_GLOBAL$i"i"/Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug互动扩展.php] [L130x109eef660EXT_STMT/Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug互动扩展.php] >00013:$i+=3; 00014:echo"ThisistestFunc!i:".$i,PHP_EOL; 00015:}
2、直接进行了两次 s 单步,可以看到 global $i 对应的 opcode 操作是 BIND_GLOBAL 。继续向下操作。
prompt>s [L130x109eef680ASSIGN_ADD$i3/Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug互动扩展.php] [L140x109eef6a0EXT_STMT/Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug互动扩展.php] >00014:echo"ThisistestFunc!i:".$i,PHP_EOL; 00015:} 00016: prompt>s [L140x109eef6c0CONCAT"ThisistestFunc!"+$i~1/Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug互动扩展.php] [L140x109eef6e0ECHO~1/Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug互动扩展.php] ThisistestFunc!i:4 [L140x109eef700EXT_STMT/Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug互动扩展.php] [L140x109eef720ECHO"\n"/Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug互动扩展.php] [L150x109eef740EXT_STMT/Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug互动扩展.php] >00015:} 00016: 00017:testFunc();
以上就是php方法断点的实现,大家学会后也赶快尝试下实例操作吧。更多php学习指路:php教程