扫码关注官方订阅号
84669人学习
65727人学习
82984人学习
467778人学习
498837人学习
471966人学习
256484人学习
152542人学习
224170人学习
139536人学习
81804人学习
85022人学习
11944人学习
20001人学习
60816人学习
5487人学习
15007人学习
2150人学习
6980人学习
194925人学习
359900人学习
1142人学习
19058人学习
3206人学习
180550人学习
48569人学习
17603人学习
40936人学习
1049人学习
750人学习
32909人学习
假设线上有一段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中文网服务号
QQ扫码加入技术交流群
扫描下载App
Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
精品班
技术支持
技术咨询
学习群
会员优惠
返回顶部