假定线上有一段php剧本,倏忽在某天出问题了,不处置惩罚然则历程没有退出。这类状况多是非常休眠或者是有段死循环代码,然则我们怎样定位呢,我们这个时刻最想晓得的应该是这个剧本在此刻在做什么吧。这个是gdb+zbacktrace就有用了。类别:PHP教程 / 日期:2019-12-01 / 浏览:179 / 评论:0
起首随意写一个测试剧本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轻松找到当前实行的代码的细致内容,更多请关注ki4网别的相干文章!
版权声明 : 本文未使用任何知识共享协议授权,您可以任何形式自由转载或使用。