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?
/var/crash
/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.Respostas:
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.service
ousudo service apport start
.Para desabilitar, execute:
sudo systemctl disable apport.service
ousudo service apport stop
para 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.conf
arquivo e comente a seguinte linha: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_pattern
como os core dumps são tratados pelo kernel:Assim, mesmo os arquivos principais são desativados por
ulimit
,apport
ainda capturam a falha.Veja também:
fonte
Para aqueles que pesquisam no Google: (no meu caso - Ubuntu 16.04 e 18.04 e um aplicativo personalizado)
/var/crash
ainda 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 ) erae
Fontes:
fonte