c++ - 如何让 GNU 调试器 gdb 在启动/重新启动时附加到守护进程?

标签 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 内启动守护进程,因为它是由事件触发的。

最佳答案

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

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

应该可以解决问题。也许之后添加一个 sleep ,让 xterm/gdb 有时间启动。

关于c++ - 如何让 GNU 调试器 gdb 在启动/重新启动时附加到守护进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42129805/

相关文章:

c++ - 使用现有项目进行 CppUnit 测试

c++ - 如何使用 Excel12v C 接口(interface)设置单元格值

c++ - glsl 顶点着色器 glGetUniformLocation 失败

c - 链表中具有字符数组的节点的内存分配

c - 而对于 : what is the best?

C - 使用其他分隔符分隔字符串?

linux - 使用源文件运行 gdb

linux - 不使用 tee 命令打印到 shell 的正确方法

c - 读取Linux内核空间中的字符设备

c++ - 无法设置 std::map 元素?