
所以我試圖調試一個在兩個節點上運行的程式。我使用 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 的信息,但不獲取有關進程的資訊。
ps:我嘗試透過 xterm 進行操作,但也沒有運氣(我無法彈出兩個 xterm)
答案1
你濫用了attach
來自文件:
attach process-id
This command attaches to a running process—one that was started outside gdb
您可以嘗試啟動它們,然後 透過gdb 提示字元中的命令或使用yod -hosts node01,node02 ./dist_task -nl 2
附加到它們attach
gdb -a <pid>