假定线上有一段php剧本,忽然正在某天出成绩了,没有解决然而过程不加入。这类状况多是异样休眠或许是有段死轮回代码,然而咱们怎样定位呢,咱们这个时分最想晓得的应该是这个剧本正在此刻正在做甚么吧。这个是gdb+zbacktrace就有用了。
起首随意写一个测试剧本test.php,外面就写一个sleep函数,换成死轮回也能够。
<?phpfunction Mecho($i){ echo $i.PHP_EOL; }$i = 20;while($i>0){if($i%2==0){ Mecho($i); }sleep(100000);$i--; }
zbacktrace下载php源码包外面就有,以后我的环境是新装的,以后的php版本是php7.2.9
间接cli执行test.php
php test.php
而后找到以后php过程
而后用gdb调试
gdb -p 56571
调试
source /usr/local/src/php-7.2.9/.gdbinit zbacktrace
这个时分就晓得了是正在test.php的11行 sleep函数招致的过程sleep。
相干教程:PHP视频教程
以上就是gdb调试php轻松找到以后执行的代码的具体内容,更多请存眷资源魔其它相干文章!
标签: php php开发教程 php开发资料 php开发自学 gdb调试
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
抱歉,评论功能暂时关闭!