Ich habe also versucht, ein Programm zu debuggen, das auf zwei Knoten läuft. Ich verwende Yod als Task-Launcher.
yod -hosts node01,node02 ./dist_task -nl 2
Das Programm hängt. Also wollte ich die GDB so verwenden
yod -hosts node01,node02 gdb ./dist_task
Ich bin in einer GDB-Sitzung in Knoten01, aber in Knoten02 kann ich nicht. Was passiert, ist, dass ich den laufenden Prozess (gdb ./dist_task) auf dem Remoteknoten (Knoten02 über htop) sehen kann, aber ich kann nicht einsteigen. Ich habe versucht, eine Verbindung zum GDB-Prozess herzustellen (ich versuche nur, eine Verbindung zum GDB-Prozess herzustellen), wie wir es normalerweise bei einem Prozess tun würden, aber in meinem Fall, da es bereits GDB ist, erhalte ich Informationen zum GDB, aber nicht zum Prozess.
PS: Ich habe es über Xterm versucht, aber auch da hatte ich kein Glück (ich kann nicht zwei Xterms öffnen).
Antwort1
Sie missbrauchenattach
Aus den Dokumenten:
attach process-id
This command attaches to a running process—one that was started outside gdb
Sie können versuchen, sie zu starten und yod -hosts node01,node02 ./dist_task -nl 2
dann eine Verbindung zu ihnen herzustellen, indem Sie den attach
Befehl in der GDB-Eingabeaufforderung verwenden odergdb -a <pid>