Como vejo o arquivo CoreDump?

12

Ao relatar um bug de uma falha, o bug é privado e um arquivo chamado CoreDump.gz. A documentação do Bug Triage diz o seguinte:

  

Se a falha ainda tiver um anexo CoreDump.gz, então não foi   possível obter automaticamente um rastreamento de pilha totalmente simbólico e verificar   para duplicatas.

Stacktrace.txt parece legível por um ser humano. Como posso entender o significado de um rastreamento de pilha? O CoreDump dentro do CoreDump.gz não parece legível para humanos. O que é um "rastreio de pilha totalmente simbólico"? Qual é a diferença entre um "rastreamento de pilha totalmente simbólico" Como faço para visualizar o conteúdo de um arquivo CoreDump? (tentou 'gato', mas não está limpo)

    
por komputes 30.09.2011 / 21:10

1 resposta

15

Coredump.gz é a memória (compactada) acessível pelo programa que caiu. É um arquivo binário. Coredumps são um tesouro, com todos os tipos de dados privados a serem extraídos.

Coredumps podem ser visualizados executando 'gdb':

gdb --core=mycoredump

Claro, você ainda precisará dos pacotes de depuração associados a esse núcleo.

Você pode, então, gerar um stacktrace por:

(gdb) bt

para gerar um stacktrace do thread atual - sem resolução de parâmetro - ou

(gdb) thread apply all bt full

para gerar um stacktrace de todos os threads no coredump, com resolução de parâmetro.

stacktrace e stacktraces completos mostram o fluxo de controle dentro de um programa. Para Python, o topo do stacktrace mostra a chamada mais antiga, com a mais recente na parte inferior; para praticamente todo o resto, a parte superior é a mais recente e a inferior a mais antiga.

Um stacktrace completo não mostrará apenas o fluxo, mas também os valores do parâmetro. É onde normalmente encontramos dados privados - por exemplo, digamos que você veja uma função chamada "validatePassword" com um parâmetro chamado "Password", e um valor de "MySecretPassword" ...

Os rastreamentos de pilha geralmente são úteis apenas se os pacotes de depuração estiverem instalados (para que os quadros da pilha possam ser resolvidos em algo que possamos ler facilmente). A análise de um stacktrace exigirá que um tenha as fontes usadas para construir essa instância específica do programa.

    
por hggdh 30.09.2011 / 21:27