如何在不暂停的情况下使用 gdb 调试进程?

How can you debug a process using gdb without pausing it?

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

gdb --pid $PID

但是,当我这样做时,进程暂停了。我想附加到进程而不暂停它,并在它仍然是 运行 的时候在它的内存中环顾四周。这可能吗?或者,有没有办法 "fork" 这个过程,这样我就可以在没有 stopping/pausing 这个过程的情况下查看它的内存?

gdb 中没有任何暂停的方式。

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

与此同时,您可以尝试将 gdb 设置为 "observer mode"。然后您可以附加并使用 continue & 在后台继续该过程。您可能需要设置各种设置,例如 target-async,具体取决于 gdb 版本。

我不确定这是否有效。值得一试。请注意,有一个 window 将暂停程序。现在这是不可避免的。