调试 php 卡死
27 June 2018
➜ gdb -p $PID
(gdb) source /path/to/php-src/.gdbinit
(gdb) zbacktrace

[2018-06-27 Wed]: update
调试数据库死循环

shell> mysqladmin -uroot processlist

或者

mysql> show processlist;

结果

+-------+------+-----------+-----+---------+------+-------+--------+----------+
| Id    | User | Host      | db  | Command | Time | State | Info   | Progress |
+-------+------+-----------+-----+---------+------+-------+--------+----------+
| 12471 | xxx  | IP:60608  | xxx | Sleep   | 49   |       |        | 0.000    |
| 12491 | xxx  | localhost |     | Sleep   | 69   |       |        | 0.000    |

可以看到是 IP:60608 这个连接一直占用着数据库,登录到 IP 对应的 host 上,执行 lsof -i tcp:60608 可以看到对应的 pid,再执行下面的 debug 可以看到数据库是在哪里死循环了

➜ gdb -p $PID
(gdb) source /path/to/php-src/.gdbinit
(gdb) zbacktrace