我正在使用GDB调试具有多个进程的程序。主程序启动了两个不同的过程。让我们称它们为p1(已启动并最终启动p2的进程)p2(已启动且我要附加的进程)
诀窍在于,我需要附加到p2并仅在p1的断点之后才在其过程中的某个点中断。
所以本质上我发现自己在做:
gdb p1
(gdb) break foo
(gdb) attach <pid of p2>
(gdb) break bar
在哪里pid是通过在p1断开时在另一个选项卡中运行ps
命令来确定的。
问题是当我连接到p2时p1仍然损坏。实际上,继续,附加和新的断点都需要同时完成。我该怎么做?
答案 0 :(得分:2)
设置两个端子:1和2。
执行以下步骤:
gdb p1
。 break foo
。run
。continue
在终端1中。然后更改为终端2。bar
的p2中看到断点。这是基于这样的假设:bar
中的p2
总是会在foo
中的p1
之后被命中。