手记

GDB调试php

<?php function test1(){        while(true){              sleep(1);        }}test1();?>

cli方式执行php脚本,加入执行的进程号为14973。我们使用gdb命令来调试进程。


$sudo gdb -p 14973(gdb) print (char *)executor_globals.active_op_array->filename$1 = 0x9853a34 "/home/xinhailong/test/php/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


很显然,他正在执行第四行的sleep方法。

如果上面的方法你感觉麻烦,那你可以使用.gdbinit文件。这个文件在php源码的根目录下。使用方法如下:

$sudo gdb -p 14973(gdb) source /home/xinhailong/.gdbinit(gdb) zbacktrace[0xa453f34] sleep(1) /home/xinhailong/test/php/test.php:4[0xa453ed0] test1() /home/xinhailong/test/php/test.php:7(gdb)


0人推荐
随时随地看视频
慕课网APP