gdb - stacktrace von einem Programm bekommen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
hupfdule
Beiträge: 1864
Registriert: 09.12.2002 15:04:37
Wohnort: Berlin
Kontaktdaten:

gdb - stacktrace von einem Programm bekommen

Beitrag von hupfdule » 27.05.2003 13:06:27

Hallo,

ich versuche den Stacktrace von centericq zu bekommen, da sich das Programm scheinbar willkürlich aufhängt.
Ich habe also

Code: Alles auswählen

gdb centericq
aufgerufen, damit lief das Ding. Dann hab ich gewartet bis er sich aufgehängt hat. Und dann hab ich ihn mit {code]kill -9 PID[/code] gekillt. Nur leider hab ich dann keinen stacktrace mehr bekommen. Ein

Code: Alles auswählen

bt full
im gdb bringt nur:

Code: Alles auswählen

Cannot find thread 16384: generic error


Was hab ich denn da falsch gemacht. Ich muss zugeben, ich hab noch nie was mit dem gdb gemacht. Deswegen stell ich mich so an. ;-)
Ich brauche den stacktrace halt als Textfile, damit ich es an einen bugreport anhängen kann.

Benutzeravatar
zyta2k
Beiträge: 2446
Registriert: 14.03.2003 09:18:00
Kontaktdaten:

Beitrag von zyta2k » 27.05.2003 15:29:24

die gdb konsole hat sich auch aufgehängt ??

Benutzeravatar
hupfdule
Beiträge: 1864
Registriert: 09.12.2002 15:04:37
Wohnort: Berlin
Kontaktdaten:

Beitrag von hupfdule » 27.05.2003 16:49:11

Das sich die Konsole aufgehängt hat, würd ich nicht sagen. Ich kann ja noch Befehle absetzen. Sie funktioniert eigentlich wunderbar. Nur scheint sie den Thread nicht mehr zu haben. Was eigentlich auch nicht unbedingt ein Wunder ist, da ich das Programm ja gekillt habe....
Nur wie komme ich dann an den Stacktrace ran? Während das Programm läuft, hab ich die gdb-Konsole ja nicht mehr. Oder kann man den auch von einer anderen Konsole aus steuern?

Benutzeravatar
zyta2k
Beiträge: 2446
Registriert: 14.03.2003 09:18:00
Kontaktdaten:

Beitrag von zyta2k » 27.05.2003 16:57:02

http://bytesex.org/gdb.html
If the application receives some signal gdb will give you a prompt asking for commands. You can also type Ctrl-C at any time to get a gdb prompt.
CTRL-C probiert ??

Benutzeravatar
hupfdule
Beiträge: 1864
Registriert: 09.12.2002 15:04:37
Wohnort: Berlin
Kontaktdaten:

Beitrag von hupfdule » 27.05.2003 20:18:03

Hmmm, Ctrl-C bewirkt gar nichts.
Aber als ich das programm noch mal starten wollte (mit dem 'run'-Befehl), sagte mir der gdb, dass es bereits gestartet wurde und hat gefragt, ob ich es von vorn starten wollte. Also muss es doch irgendwie noch im Speicher gewesen sein. Nur wie komm ich dann an den Stacktrace?

Benutzeravatar
hupfdule
Beiträge: 1864
Registriert: 09.12.2002 15:04:37
Wohnort: Berlin
Kontaktdaten:

Beitrag von hupfdule » 27.05.2003 23:22:57

Ah, ich bin einen Schritt weiter. Wenn ich das Programm mit kill -5 beende, dann ist der Stacktrace offenbar noch verfügbar.

Nun würde ich nur noch gern wissen, wie ich die Ausgabe des Stacktraces gleich in eine Datei umleite. anstatt sie kopieren zu müssen. Kann mir da jemand helfen?

Antworten