gdb在附加后继续

时间:2019-02-20 04:45:21

标签: c gdb

我正在使用GDB调试具有多个进程的程序。主程序启动了两个不同的过程。让我们称它们为p1(已启动并最终启动p2的进程)p2(已启动且我要附加的进程)

诀窍在于,我需要附加到p2并仅在p1的断点之后才在其过程中的某个点中断。

所以本质上我发现自己在做:

gdb p1
(gdb) break foo
(gdb) attach <pid of p2>
(gdb) break bar

在哪里pid是通过在p1断开时在另一个选项卡中运行ps命令来确定的。

问题是当我连接到p2时p1仍然损坏。实际上,继续,附加和新的断点都需要同时完成。我该怎么做?

1 个答案:

答案 0 :(得分:2)

设置两个端子:1和2。

执行以下步骤:

  1. 在1号航站楼,gdb p1break foo
  2. 在1号航站楼,run
  3. 将在p1中找到断点,p1将暂停。
  4. 现在进程p2将正在运行(因为p1已开始运行)。
  5. 在终端2.中打开gdb并附加p2。在p2中添加断点。
  6. continue在终端1中。然后更改为终端2。
  7. 您将在bar的p2中看到断点。

这是基于这样的假设:bar中的p2总是会在foo中的p1之后被命中。