Wo sind Core Dumps auf dem Mac geschrieben?

75

Wenn ich unter Mac OS X SIGQUIT an mein C-Programm sende, wird es beendet, aber es gibt keine Core-Dump-Datei.

Müssen Sie Core Dumps unter Mac OS X manuell aktivieren (wie?) Oder werden sie an eine andere Stelle anstatt in das Arbeitsverzeichnis geschrieben?

xyz
quelle
2
Anstatt sich zu beschweren, könnten Sie es umformulieren - tatsächlich enthält Ihr Titel nicht einmal ein Verb. Ich würde Ihre Frage gerne positiv bewerten, da ich mich für das Thema interessiere. Dennoch denke ich, dass die Frage nicht der von SO geforderten Qualität entspricht. Ich habe sogar verwandte Fragen zu coredump stackoverflow.com/questions/2207233/… Übrigens müssen sich coredumps /coresin diesem Ordner befinden, aber schauen Sie in diesem Ordner über das Terminal und das Root-Konto nach.
Sorin
5
@ Sorin Ein Vorschlag ist kein Problem, Kleinlichkeit ist.
XYZ
1
@ Sorin FYI 'are' ist ein (Verknüpfungs-) Verb. Nicht, dass es hier wirklich wichtig wäre, aber wenn wir die Grammatik kritisieren, machen wir es richtig;) examples.yourdictionary.com/reference/examples/…
Rick Smith

Antworten:

96

Es scheint, dass sie standardmäßig unterdrückt werden. Laufen

$ ulimit -c unlimited

Aktiviert Core-Dumps für das aktuelle Terminal und wird in /coresas platziert core.PID. Wenn Sie eine neue Sitzung öffnen, wird sie wieder auf den Standardwert gesetzt.

xyz
quelle
30

Unter macOS werden Ihre Absturzabbilder automatisch von Crash Reporter verarbeitet .

Sie können Backtrace-Dateien finden, indem Sie Console ausführen und zum Abschnitt " Benutzerdiagnoseberichte " (unter "Diagnose- und Verwendungsinformationen") wechseln oder sie in suchen ~/Library/Logs/DiagnosticReports.

Sie können auch überprüfen, wo Speicherauszüge generiert werden, indem Sie die system.logDatei überwachen , z

tail -f /var/log/system.log | grep crash

Die eigentlichen Core- Dump-Dateien finden Sie in /cores.

Siehe auch:

Kenorb
quelle
13

Die Antwort oben,

ulimit -c unbegrenzt

funktioniert - aber stellen Sie sicher, dass Sie das in demselben Terminal ausführen, von dem aus Sie das Programm ausführen, das den Core ausgibt. Sie müssen zuerst den Befehl ulimit ausführen.

Joshua Richardson
quelle
12

Außerdem muss das Verzeichnis / cores vorhanden sein und der Benutzer, der das Programm ausführt, muss über Schreibberechtigungen verfügen.

user666406
quelle
6
Ich habe es gerade aufgeräumt und 186 GB meines Speicherplatzes belegt!
Dragonborn
11

Standardmäßig sind bestimmte Verzeichnisse in Mac OSX ausgeblendet. Möglicherweise möchten Sie diese Funktion im Terminal aktivieren. Anschließend sollte der Core-Dump im Verzeichnis / in den Kernen sichtbar sein.

Standardeinstellungen schreiben com.apple.finder AppleShowAllFiles TRUE

Gnark
quelle
3
Vielen Dank. Ich habe mit Terminal (ls-lah) gestöbert, aber das ist trotzdem ein nützlicher Tipp.
XYZ