【问题标题】:gdb continue after attachgdb 附加后继续
【发布时间】:2019-02-20 04:45:20
【问题描述】:

我正在使用 GDB 调试具有多个进程的程序。有两个不同的进程都由主程序启动。让我们称它们为 p1(启动并最终启动 p2 的进程)p2(启动并希望附加到的进程)

诀窍是我需要附加到 p2 并仅在 p1 中的断点之后在其进程中的某个点处中断。

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

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

其中 pid 是通过在 p1 损坏时在另一个选项卡中运行 ps 命令来确定的。

问题在于,当我附加到 p2 时,p1 仍然损坏。真的,继续、附加和新断点都需要同时完成。我该怎么做?

【问题讨论】:

    标签: c gdb


    【解决方案1】:

    制作两个终端: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. 您将看到在 p2 中的bar 处遇到断点。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多