Saya menggunakan GDB untuk men-debug kesalahan segmentasi dalam aplikasi python saya di Kubuntu 12.04. Seharusnya GDB versi 7 memiliki makro built-in untuk mengekstraksi informasi tentang tumpukan python (http://docs.python.org/devguide/gdb.html), tetapi saya mengalami kesulitan untuk membuatnya berfungsi. Saya telah menginstal python-dbg.
Ketika saya meminta jejak tumpukan python di GDB, hasilnya terlihat seperti ini:
(gdb) py-bt
#5 (unable to read python frame information)
#16 (unable to read python frame information)
#26 (unable to read python frame information)
...
Versi GDB saya adalah 7.4-2012.04-0ubuntu2, Python adalah 2.7.3-0ubuntu3.
Di Ubuntu 16.04 saya berhasil mendapatkan jejak tumpukan Python di Python 3.5 dengan:
Menginstal
python3-dbg
danpython3-dev
:$ sudo apt install python3-dbg python3-dev
python3-dbg
paket disertai dengan dokumentasi singkat cara menggunakannya di/usr/share/doc/python3-dbg/README.debug
mana saya akan gunakan pada langkah berikutnya.Menambahkan skrip pembantu GDB yang belum dibongkar
/usr/share/doc/python3.5/gdbinit.gz
ke~/.gdbinit
:zcat /usr/share/doc/python3.5/gdbinit.gz >> ~/.gdbinit
Sekarang gdb akan dapat menemukan simbol untuk biner Python dan
py-bt
berfungsi untuk menampilkan jejak tumpukan Python di gdb:sumber
pystack
tetapi tidak adapy-bt
. Adakah yang tahu apa yang terjadi?python 3.5
saya sudah menginstalnyapython 3.6
?Mungkin ini membantu seseorang: Biner tersebut dinamai
python2.7-dbg
di sistem Debian saya, berasal daripython2.7-dbg
paket. Saya juga menginstalpython2.7-dev
paket danapt-get source python2.7-dbg
, sehinggagdb
dapat menemukan file sumber ke juru bahasa Python.Dengan semua ini di tempat, saya berhasil men-debug
SIGSEGV
saya berlari ke: https://bugs.python.org/issue34870sumber