1、使用 phpdbg_break_function() 来可以给这个 testFunc() 方法设置一个断点。当代码中调用这个函数的时候,进入这个断点中。
提示> r [testFunc() 中的断点 #0,位于 /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug 交互扩展.php:11,点击数:1] >00011: 函数 testFunc(){ 00012:全局$i; 00013: $i += 3; 提示>s [L12 0x109eef620 EXT_STMT /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug互动扩展.php] >00012:全局$i; 00013: $i += 3; 00014: echo "这是 testFunc! i:" . $i, PHP_EOL; 提示>s [L12 0x109eef640 BIND_GLOBAL $i "i" /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug互动扩展.php] [L13 0x109eef660 EXT_STMT /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug互动扩展.php] >00013: $i += 3; 00014: echo "这是 testFunc! i:" . $i, PHP_EOL; 00015:}
2、直接进行了两次单步,可以看到 global $i 对应的操作码是 BIND_GLOBAL 。继续延续操作。
提示>s [L13 0x109eef680 ASSIGN_ADD $i 3 /Users/zhangyue/MyDoc/blog/dev-blog/php/202006/source/PHPDebug文章互动扩展.php] [L14 0x109eef6a0 EXT_STMT /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug互动扩展.php] >00014: echo "这是 testFunc! i:" . $i, PHP_EOL; 00015:} 00016: 提示>s [L14 0x109eef6c0 CONCAT "This is testFunc!"+ $i ~1 /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug互动扩展.php] [L14 0x109eef6e0 ECHO ~1 /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug互动扩展.php] 这是测试函数!我:4 [L14 0x109eef700 EXT_STMT /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug互动扩展.php] [L14 0x109eef720 ECHO "n" /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug互动扩展.php] [L15 0x109eef740 EXT_STMT /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug互动扩展.php] >00015:} 00016: 00017:测试函数();
以上就是php方法断点的实现,大家学会后也赶紧尝试下实例操作吧。