Wie kann ich in den Prozess einsteigen, der auf gdb läuft?

424
solti

Also habe ich versucht, ein Programm zu debuggen, das auf zwei Knoten läuft. Ich benutze yod als Task Launcher.

 yod -hosts node01,node02 ./dist_task -nl 2 

Das Programm steht fest. Also wollte ich die GDB so benutzen

 yod -hosts node01,node02 gdb ./dist_task 

Ich bin in der gdb-Sitzung in node01, aber für node02 kann ich das nicht. Was passiert, ist, ich kann den Prozess sehen (gdb ./dist_task) auf dem Remote-Knoten (node02 von htop), aber ich kann nicht hineingehen. Ich habe versucht, Attach zu machen (ich versuche nur, an den Gdb-Prozess anzuhängen), wie wir es normalerweise für einen Prozess tun würden, aber in meinem Fall, da es bereits GDB ist, bekomme ich Informationen über die GDB, aber nicht über den Prozess.

ps: Ich habe es mit xterm versucht, aber auch dort kein Glück (ich kann nicht zwei xterm knallen)

0
Haben Sie sich gebunden, "strace" an den Prozess anzuhängen? Übrigens bedeutet "Warten" nicht "Feststecken" ott-- vor 8 Jahren 1
Aber auf diese Weise konnte ich nur den Systemaufruf sehen. Eigentlich wollte ich gdb: p .. yeah Sie haben Recht, zu warten / festzuhalten, ich glaube, ich werde es korrigieren. solti vor 8 Jahren 0
Eine andere Option könnte "ltrace" sein. Überprüfen Sie, ob Ihr System dies unterstützt. ott-- vor 8 Jahren 0
hmm ich habe ltrace .. ich könnte das dann versuchen solti vor 8 Jahren 0

1 Antwort auf die Frage

0
ssnobody

Du missbrauchst attach

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 2dann über den attachBefehl an der Eingabeaufforderung von gdb oder über das Kommando mit ihnen zu verbindengdb -a <pid>

Ich habe das gemacht und es funktioniert nicht .. seitdem ich gehe und mache das Programm schon ausgeführt ... Ich wollte gdb von Anfang an machen solti vor 8 Jahren 0
Vielleicht möchten Sie dann in gdbserver nachsehen. Alternativ können Sie ein SIGINT direkt nach dem Start an den Prozess senden, damit es nicht weiter ausgeführt wird und GDB etwas anhängen kann. ssnobody vor 8 Jahren 0