gdb で実行中のプロセスに入るにはどうすればいいですか?

gdb で実行中のプロセスに入るにはどうすればいいですか?

そこで、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してアタッチするか、attachgdb -a <pid>

関連情報