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
Segmentation fault auswerten
@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.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.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Nein. Man kann halt sein Programm immer so starten oder sich so Lösungen wie Talkback oder KCrashGuard ansehen.Francesco hat geschrieben:1) kann man das auch irgendwie "herauskitzeln", wenn man python normal startet.
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``Francesco hat geschrieben:2) wenn 1) kann man das in sys.stderr umleiten?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hi Leonidas, Talkback oder KCrashguard werde ich mir einmal ansehen. Zu 2) ja, das klingt einleuchtend.Leonidas hat geschrieben:Nein. Man kann halt sein Programm immer so starten oder sich so Lösungen wie Talkback oder KCrashGuard ansehen.Francesco hat geschrieben:1) kann man das auch irgendwie "herauskitzeln", wenn man python normal startet.
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``Francesco hat geschrieben:2) wenn 1) kann man das in sys.stderr umleiten?