Segmentation fault auswerten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

Hi,

glaube zwar nicht dass das geht, aber wer weiß...

Angenommen, mein Python programm crasht "unsanft" (eben mit einem segmentation fault zb). Dann hat man die Möglichkeit (falls man das überhaupt reproduzieren kann), das ganze mit gdb zu starten, und wenn man Glück hat, wird man aufgrund des backtraces ein bisschen schlauer.

Meine Fragen sind:
1) kann man das auch irgendwie "herauskitzeln", wenn man python normal startet.
2) wenn 1) kann man das in sys.stderr umleiten?

Kleiner Zusatz: Natürlich macht das nur Sinn (zumindest mehr), wenn man das ganze mit einem debug build von Python und den anderen Modulen (wie wxPython) betreibt
Zuletzt geändert von Francesco am Freitag 27. August 2010, 16:38, insgesamt 1-mal geändert.
BlackJack

@Francesco: Aus einem gdb-Traceback wird man nur bedingt schlauer wenn die beteiligten Bibliotheken nicht mit Debuginformationen übersetzt wurden. Ansonsten hat man nur einen Stapelabzug mit einem Haufen Adressen statt Funktionsnamen, Dateinamen, und Zeilennummern anhand derer man sich dann im C-Quelltext umschauen kann.
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

BlackJack hat geschrieben:@Francesco: Aus einem gdb-Traceback wird man nur bedingt schlauer wenn die beteiligten Bibliotheken nicht mit Debuginformationen übersetzt wurden. Ansonsten hat man nur einen Stapelabzug mit einem Haufen Adressen statt Funktionsnamen, Dateinamen, und Zeilennummern anhand derer man sich dann im C-Quelltext umschauen kann.
@Blackjack: Ich glaube, das habe ich fast gleichzeitig mit dir noch in meinem ersten Beitrag editiert. Es ist trotzdem eine etwas "anstrengende" Vorgangsweise. Oft sind es ohnehin reine Pythonfehler, die sich eben nicht mit einem traceback, sondern mit "hardcrashes" auswirken, besonders then man Drittmodule verwendet. ;)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Francesco hat geschrieben:1) kann man das auch irgendwie "herauskitzeln", wenn man python normal startet.
Nein. Man kann halt sein Programm immer so starten oder sich so Lösungen wie Talkback oder KCrashGuard ansehen.
Francesco hat geschrieben:2) wenn 1) kann man das in sys.stderr umleiten?
Wenn der Interpreter crasht gibt es doch kein ``sys.stderr`` mehr, da wäre eine Umleitung darin etwa so sinnvoll wie das Umleiten nach ``/dev/null``
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

Leonidas hat geschrieben:
Francesco hat geschrieben:1) kann man das auch irgendwie "herauskitzeln", wenn man python normal startet.
Nein. Man kann halt sein Programm immer so starten oder sich so Lösungen wie Talkback oder KCrashGuard ansehen.
Francesco hat geschrieben:2) wenn 1) kann man das in sys.stderr umleiten?
Wenn der Interpreter crasht gibt es doch kein ``sys.stderr`` mehr, da wäre eine Umleitung darin etwa so sinnvoll wie das Umleiten nach ``/dev/null``
Hi Leonidas, Talkback oder KCrashguard werde ich mir einmal ansehen. Zu 2) ja, das klingt einleuchtend. ;)
Antworten