Gdb
, o utilitário de depuração GNU, pode fornecer tal funcionalidade, embora somente para programas ou processos selecionados individualmente. Não há não uma maneira fácil de fazer isso e alternar entre as pilhas de chamadas dos processos em execução no sistema, como o programa Sysinternals faz no Windows. No entanto, você pode tentar pstack
, mas eu não tive muito sucesso com isso.
Você também precisa instalar os pacotes dbg
(ou seja, os pacotes de símbolos) para que qualquer backtrace de pilha de chamadas gdb
funcione. Veja o wiki do Ubuntu para mais informações sobre esses pacotes. Basicamente, a versão dbg
do pacote é instalada como a normal. Você corre, por exemplo,
sudo apt-get install xserver-xorg-core-dbg
Você pode fazer um backtrace em um programa iniciando o programa em gdb
ou você pode fazer um em um programa já em execução, anexando gdb
a esse processo: consulte aqui para mais detalhes.
Consulte o manual oficial para obter mais informações sobre gdb
e backtracing e mais geralmente informações úteis estão aqui na página de depuração do Ubuntu .
Formas adicionais de analisar processos em execução usando strace
, etc, que são úteis para desenvolvedores, etc, na análise de um processo e suas chamadas de sistema, em oposição a chamadas de pilha, foram movidas para essa questão aqui (como eu pensei que eles são agora mais relevantes lá):