1 、使用 phpdbg_break_function () 来给这个 testfunc () 方法设置一个断点。当代码中调用这个函数的时候, 就会进入这个断点中。就会进入这个断点中。
พรอมต์> ร [เบรกพอยต์ #0 ใน testFunc() ที่ /Users/zhangyue/MyDoc/博客文章/dev-blog/php/202006/source/PHPDebug互动扩ส่วนขยาย.php:11, hits: 1] >00011: ฟังก์ชัน testFunc(){ 00012: ทั่วโลก $i; 00013: $i += 3; พรอมต์> ส [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; พรอมต์> ส [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、直接进行了两次 s 单步,可以看到 global $i 对应的 opcode 操作是 BIND_GLOBAL 。继续向下操作。
พรอมต์> ส [L13 0x109eef680 ASSIGN_ADD $i 3 /Users/zhangyue/MyDoc/博客文章/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: พรอมต์> ส [L14 0x109eef6c0 CONCAT "นี่คือ 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] นี่คือ testFunc! ฉัน: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: testFunc();
以上就是php方法断点的实现,大家学会后也赶快尝试下实例操作吧。