Dove trovo il dump principale in Ubuntu 16.04LTS?


14

Ho un programma C ++ che fa quello che dovrebbe fare, ma ci deve essere qualche problema con il puntatore, dal momento che si arresta in modo anomalo alla fine e crea un dump principale. Il mio problema è che non riesco a trovare il file principale, quindi non riesco a eseguirne il debug.

Ho provato

ulimit -c unlimited
ulimit -a

e ora la dimensione del file è impostata su illimitata, ma non riesco ancora a trovare il nucleo. Ho provato in ogni cartella scritta qui, ma sembra che non sia stato creato alcun file core.

Dove posso trovarlo?


Directory corrente, oppure/var/crash
waltinator,

4
Sebbene sia vero nella maggior parte dei casi, @waltinator, a volte è necessario verificare /var/log/apport.log, poiché le moderne versioni di Ubuntu usano Apport, che può interferire con il core-dumping in modi non ovvi. Consulta stackoverflow.com/a/18368068/1772379 per maggiori informazioni.
Ben Johnson,

Risposte:


12

In Ubuntu i dump principali sono gestiti da Apport e possono essere localizzati /var/crash/. Ma è disabilitato di default nelle versioni stabili.

Per abilitare Apport, eseguire: sudo systemctl enable apport.serviceo sudo service apport start.


Per disabilitare, eseguire: sudo systemctl disable apport.serviceo sudo service apport stopper tornare al normale metodo di dumping core. Vedi: Come abilitare o disabilitare Apport? .

Per disabilitare permanentemente, modifica il /etc/apport/crashdb.conffile e commenta la seguente riga:

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

aggiungendo un simbolo cancelletto ( #) all'inizio della riga.

Per disabilitare la segnalazione di arresti anomali (torna alla normalità), rimuovere il simbolo hash (lo stesso di prima).


Puoi anche controllare core_patterncome i core dump sono gestiti dal kernel:

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

Quindi anche i file core sono disabilitati da ulimit, apportcontinueranno a catturare il crash.

Guarda anche:


3

Per quei googlin ': (nel mio caso - Ubuntu 16.04 e 18.04 e un'app personalizzata) /var/crashera ancora vuoto, quindi un modo rapido per gestire la creazione del core (a condizione che tu stia usando ad esempio un'impostazione incorporata ulimit pertinente ) 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)


fonti:


Semplice, diretto, funzionante.
Taekahn,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.