Estoy usando GDB para depurar un error de segmentación en mi aplicación python en Kubuntu 12.04. Supuestamente, la versión 7 de GDB tiene macros incorporadas para extraer información sobre la pila de Python (http://docs.python.org/devguide/gdb.html), pero estoy teniendo problemas para que funcione. He instalado python-dbg.
Cuando solicito un seguimiento de la pila de Python en GDB, el resultado se ve así:
(gdb) py-bt
#5 (unable to read python frame information)
#16 (unable to read python frame information)
#26 (unable to read python frame information)
...
Mi versión GDB es 7.4-2012.04-0ubuntu2, Python es 2.7.3-0ubuntu3.
En Ubuntu 16.04 logré obtener el seguimiento de la pila de Python en Python 3.5 al:
Instalación
python3-dbg
ypython3-dev
:$ sudo apt install python3-dbg python3-dev
python3-dbg
El paquete viene con una breve documentación sobre cómo usarlo,/usr/share/doc/python3-dbg/README.debug
que utilizaré en el siguiente paso.Agregar un script auxiliar GDB desempaquetado
/usr/share/doc/python3.5/gdbinit.gz
a~/.gdbinit
:zcat /usr/share/doc/python3.5/gdbinit.gz >> ~/.gdbinit
Ahora gdb podrá encontrar símbolos para el binario de Python y
py-bt
funciona para mostrar el seguimiento de la pila de Python en gdb:fuente
pystack
pero no haypy-bt
. ¿Tienes idea de lo que está pasando?python 3.5
a pesar de que ya he instaladopython 3.6
?Tal vez esto ayude a alguien: el binario se nombra
python2.7-dbg
en mi sistema Debian, proveniente delpython2.7-dbg
paquete. También instalé elpython2.7-dev
paquete yapt-get source python2.7-dbg
, para quegdb
pudiera encontrar los archivos de origen para el intérprete de Python.Con todo esto en su lugar, logré depurar el problema con el que
SIGSEGV
me encontraba: https://bugs.python.org/issue34870fuente