Onde encontro o dump principal no ubuntu 16.04LTS?


14

Eu tenho um programa C ++ que faz o que é suposto fazer, mas deve haver algum problema com o ponteiro, pois ele trava no final e cria um dump principal. Meu problema é que não consigo encontrar o arquivo principal, portanto não consigo depurá-lo.

eu tentei

ulimit -c unlimited
ulimit -a

e agora a dimensão do arquivo está definida como ilimitada, mas ainda não consigo encontrar o núcleo. Eu tentei em todas as pastas escritas aqui, mas ainda parece que nenhum arquivo principal é criado.

Onde posso encontrá-lo?


Diretório atual, ou/var/crash
waltinator 19/10/10

4
Embora verdadeiro na maioria dos casos, o @waltinator, às vezes é necessário verificar /var/log/apport.log, porque as versões modernas do Ubuntu usam o Apport, que pode interferir no core-dumping de maneiras não óbvias. Consulte stackoverflow.com/a/18368068/1772379 para obter mais informações.
Ben Johnson

Respostas:


12

No Ubuntu, os core dumps são gerenciados pelo Apport e podem ser localizados em /var/crash/. Mas está desativado por padrão em versões estáveis.

Para ativar o Apport, execute: sudo systemctl enable apport.serviceou sudo service apport start.


Para desabilitar, execute: sudo systemctl disable apport.serviceou sudo service apport stoppara retornar ao método normal de dumping de núcleo. Consulte: Como ativar ou desativar o Apport? .

Para desativar permanentemente, edite o /etc/apport/crashdb.confarquivo e comente a seguinte linha:

'problem_types': ['Bug', 'Package'],

adicionando um símbolo de hash ( #) no início da linha.

Para desativar o relatório de falhas (de volta ao normal), remova o símbolo de hash (o mesmo que era).


Você também pode verificar core_patterncomo os core dumps são tratados pelo kernel:

$ cat /proc/sys/kernel/core_pattern
|/usr/share/apport/apport %p %s %c

Assim, mesmo os arquivos principais são desativados por ulimit, apportainda capturam a falha.

Veja também:


3

Para aqueles que pesquisam no Google: (no meu caso - Ubuntu 16.04 e 18.04 e um aplicativo personalizado) /var/crashainda estava vazio, portanto, uma maneira rápida de lidar com a criação de núcleo (desde que você esteja, por exemplo, usando uma configuração interna ulimit relevante ) era

sudo sysctl -w kernel.core_pattern=core.%u.%p.%t # to enable core generation

e

systemctl restart apport # to restore default apport settings
# which, by the way, were "|/usr/share/apport/apport %p %s %c %d %P" (without quotes)


Fontes:


Simples, direto, funcionou.
Taekahn 15/10/19
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.