发现 Segmentation fault
今天安装了 xdebug、xhrpof等分析工具, 然后在运行相关命令时出现了 Segmentation fault(分段错误), 一般出现此错误大部分 内存越界指针错误引起的原因, 并非 php 代码本身原因. 出现此问题大部分因为底层拓展导致。
示例:
php artisan xxx:xxxx
output:
Segmentation fault
复制代码
生成core dump
这种错误信息, 借助 core.dump 文件分析是种比较好的办法
默认文件是关闭的, 开启生成 core.dump 文件
ulimit -c unlimited
复制代码
重新执行命令
php artisan xxx:xxxx
Segmentation fault (core dumped)
复制代码
这时默认就在当前目录下生成了 core 文件, 我们借助 gdb 来看下
调试
yum install gdb
复制代码
执行 gdb , 直接 bt 命令查看堆栈信息
gdb php core
(gdb) bt
#0 0x0000000000000000 in ?? ()
#1 0x00000000008f8eb9 in ZEND_USER_OPCODE_SPEC_HANDLER () at /usr/local/src/php-7.1.9/Zend/zend_vm_execute.h:1806
#2 0x00000000008a6a9b in execute_ex (ex=<optimized out>) at /usr/local/src/php-7.1.9/Zend/zend_vm_execute.h:429
#3 0x00000000008f44bf in ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER () at /usr/local/src/php-7.1.9/Zend/zend_vm_execute.h:35533
#4 0x00000000008a6a9b in execute_ex (ex=<optimized out>) at /usr/local/src/php-7.1.9/Zend/zend_vm_execute.h:429
#5 0x00000000008f7a35 in ZEND_DO_FCALL_SPEC_RETVAL_UNUSED_HANDLER () at /usr/local/src/php-7.1.9/Zend/zend_vm_execute.h:949
#6 0x00000000008a6a9b in execute_ex (ex=<optimized out>) at /usr/local/src/php-7.1.9/Zend/zend_vm_execute.h:429
#7 0x0000000000852981 in zend_call_function (fci=fci@entry=0x7ffee921ebc0, fci_cache