Seite 1 von 1
Segmentation fault auswerten
Verfasst: Freitag 27. August 2010, 16:31
von Francesco
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
Re: Segmentation fault auswerten
Verfasst: Freitag 27. August 2010, 16:38
von 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.
Re: Segmentation fault auswerten
Verfasst: Freitag 27. August 2010, 16:42
von Francesco
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.

Re: Segmentation fault auswerten
Verfasst: Freitag 27. August 2010, 22:04
von Leonidas
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``
Re: Segmentation fault auswerten
Verfasst: Samstag 28. August 2010, 10:59
von Francesco
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.
