如何进入gdb上运行的进程?

如何进入gdb上运行的进程?

所以我尝试调试一个在两个节点上运行的程序。我使用 yod 作为任务启动器。

 yod -hosts node01,node02 ./dist_task -nl 2

程序卡住了。所以我想像这样使用 gdb

 yod -hosts node01,node02 gdb ./dist_task

我在 node01 中进入了 gdb 会话,但无法进入 node02。发生了什么事,我可以看到远程节点(通过 htop 查看 node02)上运行的进程(gdb ./dist_task),但我无法进入它。我尝试执行附加操作(我只是尝试附加到 gdb 进程),就像我们通常对进程执行的操作一样,但在我的例子中,由于它已经是 gdb,所以我获得了有关 gdb 的信息,但没有获得有关进程的信息。

附言:我尝试通过 xterm 进行操作,但也没有成功(我无法弹出两个 xterm)

答案1

你滥用attach

来自文档:

attach process-id
    This command attaches to a running process—one that was started outside gdb

您可以尝试启动它们,然后 yod -hosts node01,node02 ./dist_task -nl 2通过attachgdb 提示符中的命令或使用gdb -a <pid>

相关内容