Wo finde ich den Core Dump in Ubuntu 16.04LTS?

13

Ich habe ein C ++ - Programm, das das tut, was es tun soll, aber es muss ein Problem mit dem Zeiger geben, da es am Ende abstürzt und einen Core-Dump erstellt. Mein Problem ist, dass ich die Kerndatei nicht finden kann, also kann ich sie nicht debuggen.

Ich habe versucht

ulimit -c unlimited
ulimit -a

und jetzt ist die Dimension der Datei auf unbegrenzt eingestellt, aber ich kann den Kern immer noch nicht finden. Ich habe es in jedem hier geschriebenen Ordner versucht , aber es scheint immer noch, dass keine Kerndatei erstellt wird.

Wo kann ich es finden?

mattiav27
quelle
Aktuelles Verzeichnis, oder/var/crash
Waltinator
4
In den meisten Fällen, @waltinator, ist es manchmal notwendig, dies zu überprüfen /var/log/apport.log, da moderne Ubuntu-Versionen Apport verwenden, was das Core-Dumping auf nicht offensichtliche Weise stören kann. Weitere Informationen finden Sie unter stackoverflow.com/a/18368068/1772379 .
Ben Johnson

Antworten:

12

In Ubuntu werden die Core-Dumps von Apport verwaltet und können sich in befinden /var/crash/. In stabilen Versionen ist es jedoch standardmäßig deaktiviert.

Führen Sie zum Aktivieren von Apport Folgendes aus: sudo systemctl enable apport.serviceoder sudo service apport start.


Führen Sie zum Deaktivieren Folgendes aus: sudo systemctl disable apport.serviceoder, sudo service apport stopum zur normalen Core-Dumping-Methode zurückzukehren. Siehe: Wie aktiviere oder deaktiviere ich Apport? .

Bearbeiten Sie die /etc/apport/crashdb.confDatei und kommentieren Sie die folgende Zeile, um sie dauerhaft zu deaktivieren :

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

durch Hinzufügen eines Hash-Symbols ( #) am Zeilenanfang.

Entfernen Sie das Hash-Symbol (wie zuvor), um die Absturzberichterstattung zu deaktivieren (wieder normal).


Sie können auch überprüfen core_pattern, wie Core-Dumps vom Kernel behandelt werden:

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

So werden auch Kerndateien von deaktiviert ulimit, apportder Absturz wird trotzdem erfasst.

Siehe auch:

Kenorb
quelle
2

Für diejenigen, die googlin ': (in meinem Fall - Ubuntu 16.04 und 18.04 und eine benutzerdefinierte App) /var/crashwar noch leer, so war eine schnelle Möglichkeit, die Kernerstellung zu handhaben (vorausgesetzt, Sie verwenden zB eine relevante ulimit-integrierte Einstellung )

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

und

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


Quellen:

ジ ョ ー ジ
quelle
Einfach, unkompliziert, funktioniert.
Taekahn