如何在启动/重启时将GNU调试器gdb附加到守护程序?

时间:2017-02-09 06:34:23

标签: c++ c linux debugging

我有一个守护进程(比如tempd)正在运行并且gdb附加到它。

% ps x | grep tempd
5467  ??  S      0:00.36 /usr/sbin/tmpd -N

> gdb
gdb> symbol-file /var/tmp/tmpd
gdb> attach 5467
gdb> breakpoint a_funcion_name
breakpoint was set 
gdb> c 
continuing
.

如何在守护程序重启时使gdb自动附加到新PID?我想在一个函数中设置断点,然后在找到守护进程的新PID并手动将gdb附加到它之前执行该函数。我没有从gdb中启动守护进程的选项,因为它是由事件触发的。

2 个答案:

答案 0 :(得分:0)

这是你自己的守护进程吗?如果是这样,可以从守护进程中启动gdb吗?

system( "xterm -c gdb <prog-path> <pid> &");

应该做的伎俩。也许之后再加一个睡眠来给xterm / gdb时间。

答案 1 :(得分:0)

你可以创建另一个脚本,不断检查或者在inerval中进行检查 如果创建了名为x的进程 然后执行gdb并附加到它。