Como ativar o depósito de núcleo no Linux

Como ativar o depósito de núcleo no Linux

Este tutorial explica como ativar o depósito de núcleo no Linux.

Depois de ler este tutorial, você poderá verificar se o dump do núcleo está ativado, como habilitá -lo ou desativá -lo, como visualizar e mais.

Os arquivos de despejo principal são usados ​​para diagnosticar e depurar falhas de software.

Um dump do núcleo é um registro não estruturado do conteúdo da memória que contém informações sobre a execução de software anormalmente encerrado, incluindo o motivo do acidente.

Em outras palavras, este é um instantâneo do estado do programa com o processo de execução e rescisão registrado. Você pode pensar no depósito de núcleo como uma caixa preta de avião ou um arquivo de logs.

O gerenciamento do dump do núcleo pode variar de uma distribuição Linux para outro, este tutorial é otimizado para distribuições Linux baseadas em Debian como o Ubuntu, e distribuições Redhat Linux como CentOS.

Todas as instruções incluídas neste artigo contêm capturas de tela, facilitando a compreensão e a seguir.

Habilitando o depósito de núcleo no Linux

O primeiro passo é verificar se o dump do núcleo está ativado. Para esse fim, use o seguinte comando. Se o tamanho do arquivo principal for 0, como no exemplo abaixo, o dump do núcleo será desativado.

ulimit -a | Grep Core


Para ativar o depósito de núcleo no Linux, com tamanho ilimitado, use o seguinte comando. Em seguida, execute o comando anterior, você verá que o 0 é substituído por ilimitado.

ulimit -s -c ilimitado

Para ativar o dump do núcleo permanentemente, você precisa editar o arquivo/etc/security/limites.conf. Abra -o com privilégios usando qualquer editor de texto.

sudo nano/etc/segurança/limites.conf

Em seguida, adicione a seguinte linha e fechar alterações de economia:

* Soft Core Unlimited

Agora, vamos tentar executar um aplicativo programado para travar intencionalmente.

Como você pode ver na captura de tela abaixo, o dump do núcleo foi gerado.

De acordo com a configuração padrão nas distribuições Linux baseadas no Debian, o dump principal deve ser criado no diretório atual. Você pode verificar isso executando o seguinte comando:

LS -LTR CORE

Como você pode ver na figura anterior, o dump do núcleo foi gerado corretamente.

Para visualizá -lo, você precisa instalar o depurador GNU. Você pode instalá -lo usando o apt, como mostrado na imagem abaixo.

Observe que os usuários de sistemas baseados em redhat devem usar a Ferramenta de Relatórios de Bugs Automática (ABRT) em vez de GDB.

sudo apt install gdb -y

Para visualizar os arquivos principais de despejo, use a seguinte sintaxe:

GDB essencial

No meu caso, eu corro:

GDB CrashingApp Core

Você será solicitado a pressionar "C" para continuar. Pressione -o e você verá o relatório.

Por padrão, os arquivos principais de despejo são chamados de núcleo.

Sudo sysctl -w kernel.core_pattern = núcleo

Você pode alterar o nome e os padrões de destino para identificar os principais despejos.

O comando é o seguinte:

-%u incluirá o ID do usuário no nome principal do dump. O %G incluirá o ID do grupo e %P o PID.

Sudo sysctl -w kernel.core_pattern = núcleo-%u-%g-%p

Como você pode ver, depois de executar o aplicativo de travamento novamente, um novo dump do núcleo é gerado, incluindo UID, GID e PID.

LS -LTR CORE*

Existem valores adicionais que você pode usar para definir padrões de dump do núcleo. Você pode encontrá -los na lista abaixo.

VALOR Função
% '%' caiu
%% saída um '%'
%p Inclui PID
%P Inclui PID global
%eu Mostra ID do thread
%EU ID do tópico global
%você ID do usuário
%g ID do grupo
%d Modo de despejo
%s Número do sinal
%t Tempo unix de lixão
%h nome de anfitrião
%e Arquivo executável
%E Caminho de arquivo executável

Você também pode definir um diretório de dumps do núcleo para armazená -los.

A sintaxe é a seguinte:

"/CORED" é o diretório onde os dumps do núcleo serão armazenados. Esses nomes incluirão PID e PID global.

Sudo sysctl -w kernel.core_pattern =/coreD/core-%p-%p

Como você pode ver, depois de executar o aplicativo de travamento, o depósito de núcleo foi armazenado no diretório /corado, incluindo PID e GPID.

ls -ltr /corado

Como desativar os dumps principais no Linux

Desativar o dump do núcleo é tão simples como possibilitando -os.

Basta definir o limite para 0 executando o seguinte comando:

ulimit -s -c 0

Para desativar permanentemente o dump do núcleo, edite o/etc/segurança/limites.arquivo conf usando qualquer editor de texto, conforme mostrado na figura abaixo.

sudo nano/etc/segurança/limites.conf

Adicione as 2 linhas a seguir e depois saia de alterações.

* núcleo suave 0
* núcleo duro 0

Por fim, verifique se o Core Dump foi desativado com sucesso, executando o seguinte:

ulimit -a | Grep Core

Como você pode ver, o limite de tamanho do arquivo principal é 0, o dump do núcleo está desativado.

Conclusão

Os principais despejos podem ser muito úteis para procedimentos de depuração e identificar falhas. Recomenda -se familiarizar -se para melhorar a resposta dos problemas. Eles também podem ser úteis para capturar dados liberados pela memória dinâmica, buscando informações sobre programas que não estão mais executando. Eles também podem ser úteis para os programadores encontrarem erros. Um dump do núcleo pode salvar o estado de um processo em um estado definido para retornar a ele mais tarde. Ele também pode ser despejado em um host remoto em uma rede (que é um risco de segurança).