そこで、2 つのノードで実行されるプログラムをデバッグしようとしました。タスク ランチャーとして 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 経由で試してみましたが、そこでもうまくいきませんでした (2 つの 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>