Se você olhar para a página do Core Man, ela define como despejo de núcleo como “Um arquivo que contém uma imagem da memória do processo no momento da rescisão. Esta imagem pode ser usada em um depurador (e.g.) GDB para inspecionar o estado do programa na época em que ele terminou ”.
Em termos simples, um arquivo de despejo principal é um arquivo que contém informações de memória sobre um processo quando o processo específico termina.
Existem várias razões pelas quais os processos podem travar e criar um arquivo de despejo principal. Este tutorial mostrará como usar o GDB para visualizar o arquivo de despejo principal e imprimir o rastreamento da pilha.
Etapa 1: Obtenha um depósito de núcleo
Antes de começarmos a analisar o arquivo de despejo principal, precisamos gerar um. Para fazer isso, podemos usar um programa de buggy.
Considere o buggy de código.C abaixo:
#incluirNo código acima, criamos um loop para 0 e 10. Se o valor de I é 5, fazemos referência a um ponteiro ruim, causando assim segfault e criando um dump do núcleo.
Clang -g Bugg.C -O BuggyAgora execute o código como:
./buggyO código acima fornecerá a saída como:
eu é 0Etapa 2: Open Core Dump com GDB
Para abrir o arquivo de despejo principal com o GDB, use o comando gdb e passe o caminho para o executável e o despejo de núcleo como parâmetros como:
$ gdb buggy núcleoIsso lançará o GDB e incluirá o dump do núcleo, conforme mostrado na saída abaixo:
Para mostrar o traço da pilha do arquivo principal, use o comando backtrace:
(GDB) BacktraceConclusão
Este tutorial mostrou como usar o GDB para abrir um arquivo de despejo principal e obter o rastreamento da pilha.