C++ 如何使GNU调试器gdb在启动/重新启动时连接到守护进程?

C++ 如何使GNU调试器gdb在启动/重新启动时连接到守护进程?,c++,c,linux,debugging,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 . 当守护进程重新启动时,如何使

我有一个守护进程(比如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中启动守护程序的选项,因为它是由事件触发的。

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

system( "xterm -c gdb <prog-path> <pid> &");
系统(“xterm-c gdb&”);

我们应该做到这一点。可能会在之后添加一个sleep,让xterm/gdb有时间出现。

您可以创建另一个脚本,该脚本会不断地或以惰性方式进行检查
如果创建了名为x的进程

然后执行gdb并附加到它。

这似乎与。试着去问问那里