【问题标题】:How can you debug a process using gdb without pausing it?如何在不暂停的情况下使用 gdb 调试进程?
【发布时间】:2015-02-14 10:48:47
【问题描述】:

我有一个已经在运行的进程,我想用 GDB 调试它。我一直在使用

gdb --pid $PID

但是,当我这样做时,该过程会暂停。我想附加到进程而不暂停它,并在它仍在运行时环顾它的内存。这可能吗?或者,有没有办法“分叉”进程,以便我可以查看它的内存,而无需停止/暂停进程?

【问题讨论】:

  • 您可以使用gcore 命令获取进程内存的快照,然后使用 gdb 查看。根据您的操作系统,这可能需要也可能不需要短暂暂停进程。

标签: debugging gdb


【解决方案1】:

gdb 中无法在没有某种暂停的情况下附加。

Linux 内核通过PTRACE_SEIZE 对此提供了一些支持,但gdb 还没有使用它。您可以跟踪 bugzilla 中的一个错误。

同时您可以尝试将 gdb 设置为“观察者模式”。然后您可以附加并使用continue & 在后台继续该过程。您可能需要设置各种设置,例如 target-async,具体取决于 gdb 版本。

我不完全确定这是否会奏效。值得一试。请注意,有一个窗口将暂停程序。这是目前无法避免的。

【讨论】:

    猜你喜欢
    • 2016-04-30
    • 2011-02-09
    • 2011-07-24
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多