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

Debugging 如何在不暂停的情况下使用gdb调试进程?,debugging,gdb,Debugging,Gdb,我有一个进程已经在运行,我想用GDB调试它。我一直在用 gdb --pid $PID 但是,当我这样做时,过程暂停。我希望在不暂停的情况下附加到进程,并在进程仍在运行时查看其内存。这可能吗?或者,有没有一种方法可以“分叉”进程,这样我就可以查看它的内存,而不必停止/暂停进程?在gdb中,没有某种暂停就无法连接 Linux内核通过PTRACE\u-capture提供了一些支持,但gdb还没有使用它。bugzilla中有一个你可以跟踪的bug 同时,您可以尝试将gdb设置为“观察者模式”。然后您可

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

gdb --pid $PID

但是,当我这样做时,过程暂停。我希望在不暂停的情况下附加到进程,并在进程仍在运行时查看其内存。这可能吗?或者,有没有一种方法可以“分叉”进程,这样我就可以查看它的内存,而不必停止/暂停进程?

在gdb中,没有某种暂停就无法连接

Linux内核通过
PTRACE\u-capture
提供了一些支持,但gdb还没有使用它。bugzilla中有一个你可以跟踪的bug

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


我不能完全肯定这是否有效。值得一试。请注意,有一个窗口将暂停程序。现在这是不可避免的。

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