Estou usando o GDB para depurar uma falha de segmentação no meu aplicativo python no Kubuntu 12.04. Supostamente, o GDB versão 7 possui macros internas para extrair informações sobre a pilha python (http://docs.python.org/devguide/gdb.html), mas estou tendo problemas para fazê-la funcionar. Eu instalei o python-dbg.
Quando solicito um rastreamento de pilha python no GDB, o resultado fica assim:
(gdb) py-bt
#5 (unable to read python frame information)
#16 (unable to read python frame information)
#26 (unable to read python frame information)
...
Minha versão do GDB é 7.4-2012.04-0ubuntu2, o Python é 2.7.3-0ubuntu3.
No Ubuntu 16.04, consegui obter o rastreio de pilha Python no Python 3.5:
Instalando
python3-dbg
epython3-dev
:$ sudo apt install python3-dbg python3-dev
python3-dbg
O pacote vem com uma documentação curta de como usá-lo na/usr/share/doc/python3-dbg/README.debug
qual usarei na próxima etapa.Anexando o script auxiliar do GDB descompactado
/usr/share/doc/python3.5/gdbinit.gz
a~/.gdbinit
:zcat /usr/share/doc/python3.5/gdbinit.gz >> ~/.gdbinit
Agora o gdb poderá encontrar símbolos para o binário Python e
py-bt
funciona para exibir o rastreamento de pilha do Python no gdb:fonte
pystack
mas não existepy-bt
. Alguma idéia do que está acontecendo?python 3.5
mesmo que eu já tenha instaladopython 3.6
?Talvez isso ajude alguém: o binário é nomeado
python2.7-dbg
no meu sistema Debian, vindo dopython2.7-dbg
pacote. Também instalei opython2.7-dev
pacote eapt-get source python2.7-dbg
, paragdb
encontrar os arquivos de origem no interpretador Python.Com tudo isso, eu consegui depurar o que
SIGSEGV
eu estava executando: https://bugs.python.org/issue34870fonte