gdb 分析出错
1 创建测试代码test.php
<?php function test1(){ while(true){ sleep(1); } }
echo getmypid() "\r\n"; test1(); ?>
2 运行文件 php test.php 获取到pid
3 运行 gdb -p pid
4 进入gdb交互
(gdb) print (char *)executor_globals.active_op_array->filename $1 = 0x9853a34 "/home/test.php" (gdb) print (char *)executor_globals.active_op_array->function_name $2 = 0x9854db8 "test1" (gdb) print executor_globals->current_execute_data->opline->lineno $3 = 4
也可以使用.gdbinit文件。这个文件在php源码的根目录下。使用方法如下
(gdb) source /data/software/php-5.5.25/.gdbinit (gdb) zbacktrace [0xa453f34] sleep(1) /home/xinhailong/test/php/test.php:4 [0xa453ed0] test1() /home/xinhailong/test/php/test.php:8 (gdb)
补充:
使用gcore 收集信息
$gcore pid(进程号) 生成core.1234 文件
$gdb core.1234 查看信息