附录:gdb工具的使用

GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具,可以用来调试C/C++开发的程序,PHP和Swoole是使用C语言开发的,所以可以用GDB来调试PHP+Swoole的程序。

gdb调试是命令行交互式的,需要掌握常用的指令。

使用方法

gdb -p 进程ID
gdb php
gdb php core

gdb有3种使用方式:

如果PATH环境变量中没有php,gdb时需要指定绝对路径,如gdb /usr/local/bin/php

常用指令

zbacktrace

zbacktrace是PHP源码包提供的一个gdb自定义指令,功能与bt指令类似,与bt不同的是zbacktrace看到的调用栈是PHP函数调用栈,而不是C函数。

下载php-src,解压后从根目录中找到一个.gdbinit文件,在gdb shell中输入

source .gdbinit
zbacktrace

.gdbinit还提供了其他更多指令,可以查看源码了解详细的信息。

使用gdb+zbacktrace跟踪死循环问题

gdb -p 进程ID