如何通过单进程配合strace和gdb高效调试PHP程序中的错误?
- 内容介绍
- 文章标签
- 相关推荐
本文共计989个文字,预计阅读时间需要4分钟。
使用单进程、strace、gdb调试PHP错误+PHP通常是在FPM守护进程下运行的,但在某些情况下,进程异常崩溃会导致502错误。以下是解决思路:
1. 单进程运行: 使用以下命令启动PHP单进程,并开启错误显示: php -d display_errors=1 -S 0.0.0.0:88
使用单进程、strace、gdb调试PHP错误PHP一般是在FPM的呵护下运行的,但是某些情况下进程异常崩溃会导致502。下面是解决思想:
1. 单进程运行:php -d display_errors=1 -S 0.0.0.0:88 #然后访问,会直接显示fatal or error的信息2. 以上不能解决,则采用stracestrace -d -f -ff -o trace.log -p FPM_ID
#或者:
strace -d -p FPM_ID
3. 如果还没解决问题,就得运用gdb (gnu's debug), 举个粟子:
最近在灰度测试PHP7的过程中,php-fpm出现间歇性的段错误。系统的错误信息如下:
php-fpm[7664]: segfault at 7f6ff4600000 ip 00007f6ff782176f sp 00007fff2e9c2fe8 error 4 in libc-2.12.so[7f6ff7798000+18a000]为了排查出错的原因,我们接下来需要进行调试。由于错误间歇性出现在php-fpm处理请求的过程中,因此,我们需要获取获取Linux的core dumps文件。
本文共计989个文字,预计阅读时间需要4分钟。
使用单进程、strace、gdb调试PHP错误+PHP通常是在FPM守护进程下运行的,但在某些情况下,进程异常崩溃会导致502错误。以下是解决思路:
1. 单进程运行: 使用以下命令启动PHP单进程,并开启错误显示: php -d display_errors=1 -S 0.0.0.0:88
使用单进程、strace、gdb调试PHP错误PHP一般是在FPM的呵护下运行的,但是某些情况下进程异常崩溃会导致502。下面是解决思想:
1. 单进程运行:php -d display_errors=1 -S 0.0.0.0:88 #然后访问,会直接显示fatal or error的信息2. 以上不能解决,则采用stracestrace -d -f -ff -o trace.log -p FPM_ID
#或者:
strace -d -p FPM_ID
3. 如果还没解决问题,就得运用gdb (gnu's debug), 举个粟子:
最近在灰度测试PHP7的过程中,php-fpm出现间歇性的段错误。系统的错误信息如下:
php-fpm[7664]: segfault at 7f6ff4600000 ip 00007f6ff782176f sp 00007fff2e9c2fe8 error 4 in libc-2.12.so[7f6ff7798000+18a000]为了排查出错的原因,我们接下来需要进行调试。由于错误间歇性出现在php-fpm处理请求的过程中,因此,我们需要获取获取Linux的core dumps文件。

