所以我尝试调试一个在两个节点上运行的程序。我使用 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
通过attach
gdb 提示符中的命令或使用gdb -a <pid>