formato do Arquivo Principal
Propósito
Contém uma imagem de um processo no momento de um erro.
Descrição
Qualquer memória compartilhada alocada pelo processo também pode ser opcionalmente omitida do arquivo core. Esses dados são apenas omitidos se a variável de ambiente CORE_NOSHM for exportada. O padrão é incluir toda a memória compartilhada no arquivo core. A variável CORE_NOSHM pode ser configurada para qualquer valor.
A nomenclatura do arquivo core exclusivo só será ativada se a variável de ambiente CORE_NAMING for exportada. O nome padrão é core como em releases anteriores. O valor da variável deve ser configurado como true.
O conteúdo de um core dump é organizado sequencialmente no arquivo núcleo da seguinte forma:
| Item | Descrição |
|---|---|
| Cabeçalho do núcleo | Define informações básicas sobre o core dump, e contém deslocamentos que localizam o restante das informações do core dump. |
| ldinfo estruturas | Define informações do carregador. |
| mstsave estruturas | Define informações do estado do encadeamento do kernel. Uma vez que a estrutura de thread de falhas mstsave é diretamente salva no cabeçalho principal, estruturas adicionais são salvas aqui apenas para programas multi-threaded. |
| Pilha de usuário padrão | Contém uma cópia da pilha de usuários no momento do dump do núcleo. |
| Área de dados padrão | (Opcional) Contém a seção de dados do usuário. |
| Regiões mapeadas da memória | (Opcional) Contém as regiões mapeadas anonimamente. |
| vm_info estruturas | (Opcional) Contém informações de deslocamento e tamanho para regiões mapeadas de memória. |
Por padrão, os dados do usuário são, regiões mapeadas anonimamente e as estruturas vm_info não estão incluídas em um dump core. Este dump de núcleo parcial inclui a pilha de processo atual, pilha de encadeamento, as estruturas do encadeamento mstsave , a estrutura do usuário e o estado dos cadastros no momento da falha. Um dump de núcleo parcial contém informações suficientes para um traceback de pilha. O tamanho de um core dump também pode ser limitado pela subroutine setrlimit .
Para ativar um dump core completo, configure a sinalização SA_FULLDUMP na subroutine sigação para o sinal que é gerar um dump core completo. Se esta sinalização for definida quando o núcleo é despejado, a seção de dados é, regiões mapeadas anonimamente e as estruturas vm_info estão incluídas no dump core.
- Todos os núcleos de dumping estão no contexto do processo de execução. Eles são jogados com um proprietário e um grupo combinando o ID do usuário efetivo (UID) e o ID do grupo (GID) do processo. Se este par UID/GID não tiver permissão para gravar no diretório de destino determinado de acordo com os procedimentos de caminho principal padrão, nenhum arquivo core será objeto de dumping.
- Se o ID do usuário real (RUID) for root, o arquivo principal sempre poderá ser despejado, mas com um modo de 0600.
- Se o ID do usuário efetivo (EUID) corresponde ao real ID do usuário (RUID), e o ID do grupo efetivo (EGID) corresponde a qualquer grupo na lista de grupos da credencial, o arquivo core será objeto de dumping com permissões de 0600.
- Se o EUID corresponde ao RUID, mas o EGID não corresponde a nenhum grupo na lista de grupos da credencial, o arquivo principal não pode ser despejado. O usuário efetivo não pode ver dados que eles não têm acesso.
- Se o EUID não corresponder ao RUID, o arquivo core pode ser despejado apenas se você tiver configurado um diretório principal usando o comando caminho do sistema . Isso evita o dumping do arquivo principal no diretório de trabalho atual ou em um diretório de núcleos específicos do usuário de tal forma que não seja possível remover o arquivo principal. Núcleo é despejado com um modo de 0600. Se você não tiver usado o comando caminho do sistema para configurar um diretório core, nenhum núcleo é despejado.
O formato do cabeçalho principal é definido pela estrutura core_dump (no arquivo de cabeçalho core.h ), que é organizado da seguinte forma:
| Item | Nome do Campo | Descrição |
|---|---|---|
| caractere | c_signo | O número do sinal que causou o erro. |
| caractere | c_flag | Um campo de bits que descreve o tipo de dump do núcleo. Os significados dos bits são os seguintes:
|
| curto | c_entradas | O número de módulos de core dump |
| struct ld_info * | c_tab | O deslocamento para o início da tabela principal |
| caddr_t | c_stack | O deslocamento para o início da pilha de usuários |
| int | c_tamanho | O tamanho da pilha de usuários |
| estruturar mstsave | c_mst | Uma cópia do mst defedor |
| usuário estruturar | c_u | Uma cópia da estrutura do usuário |
| int | c_nmsts | O número de estruturas mstsave referenciadas peloc_mstscampo |
| estruturar mstsave * | c_msts | O deslocamento para as estruturas mstsave de outras threads |
| int | c_datasize | O tamanho da região de dados |
| caddr_t | c_dados | O deslocamento para dados do usuário |
| int | c_vmregiões | O número de regiões mapeadas anonimamente |
| struct vm_info * | c_vmm | O deslocamento para o início da tabela vm_info |