Ich verwende GDB, um einen Segmentierungsfehler in meiner Python-Anwendung unter Kubuntu 12.04 zu debuggen. Angeblich verfügt GDB Version 7 über integrierte Makros zum Extrahieren von Informationen über den Python-Stack (http://docs.python.org/devguide/gdb.html), aber ich habe Probleme, ihn zum Laufen zu bringen. Ich habe python-dbg installiert.
Wenn ich in GDB nach einem Python-Stack-Trace frage, sieht das Ergebnis folgendermaßen aus:
(gdb) py-bt
#5 (unable to read python frame information)
#16 (unable to read python frame information)
#26 (unable to read python frame information)
...
Meine GDB-Version ist 7.4-2012.04-0ubuntu2, Python ist 2.7.3-0ubuntu3.
Unter Ubuntu 16.04 gelang es mir, Python-Stack-Trace in Python 3.5 zu erhalten durch:
Installation
python3-dbg
undpython3-dev
:$ sudo apt install python3-dbg python3-dev
python3-dbg
Das Paket enthält eine kurze Dokumentation zur Verwendung,/usr/share/doc/python3-dbg/README.debug
die ich im nächsten Schritt verwenden werde.Anhängen des entpackten GDB-Hilfsskripts
/usr/share/doc/python3.5/gdbinit.gz
an~/.gdbinit
:zcat /usr/share/doc/python3.5/gdbinit.gz >> ~/.gdbinit
Jetzt kann gdb Symbole für Python-Binärdateien finden und
py-bt
zeigt Python-Stack-Trace in gdb an:quelle
pystack
aber es gibt keinepy-bt
. Irgendeine Idee, was los ist?python 3.5
, obwohl ich bereits installiert habepython 3.6
?Vielleicht hilft das jemandem: Die Binärdatei ist
python2.7-dbg
auf meinem Debian-System benannt und stammt aus dempython2.7-dbg
Paket. Ich habe auch daspython2.7-dev
Paket und installiertapt-get source python2.7-dbg
, damitgdb
die Quelldateien zum Python-Interpreter gefunden werden können.Mit all dem gelang es mir, das zu debuggen, auf das
SIGSEGV
ich stieß: https://bugs.python.org/issue34870quelle