O que exatamente é e o que contém um dump de processo?

4

É claro que o GDB pode gerar um despejo principal do processo, por exemplo, através do wrapper-gcore, mas não está claro o que exatamente ele inclui e é realmente difícil encontrar uma resposta porque fontes diferentes dizem coisas totalmente diferentes.

Por causa disso, tenho as seguintes perguntas:

  1. Contém toda uma memória virtual do processo? Se não, que parte? Todas as regiões graváveis ou somente pilha ou apenas (como o próprio nome sugere) alguma parte essencial ou o quê?

  2. É possível gerar um arquivo principal com memória completa do processo via GDB? Se sim, como?

  3. Qual seria a diferença entre um "dump" gerado salvando e concatenando a memória de todas as regiões de acordo com o mapa de memória do processo e o arquivo gerado automaticamente com o comando gcore ?

  4. Um processo escreveu alguns dados em algum lugar na RAM. Posso ter certeza de que os dados serão (sempre) acessados e salvos em um arquivo principal gerado com o comando gcore ? Se não, por quê? Do que isso depende?

por Listek 26.01.2017 / 13:54

1 resposta

5

O arquivo principal contém todas as partes da memória virtual do processo que são específicas para esse processo, que geralmente são os segmentos de dados e pilha. Ele não inclui o segmento de texto, que contém o código executável - quando você deseja depurar um arquivo principal, é necessário informar ao depurador qual programa está sendo executado.

Você pode encontrar uma explicação detalhada do conteúdo em Anatomia de um arquivo principal do ELF

    
por 27.01.2017 / 00:35