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?
/cores
in diesem Ordner befinden, aber schauen Sie in diesem Ordner über das Terminal und das Root-Konto nach.Antworten:
Es scheint, dass sie standardmäßig unterdrückt werden. Laufen
Aktiviert Core-Dumps für das aktuelle Terminal und wird in
/cores
as platziertcore.PID
. Wenn Sie eine neue Sitzung öffnen, wird sie wieder auf den Standardwert gesetzt.quelle
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.log
Datei überwachen , zDie eigentlichen Core- Dump-Dateien finden Sie in
/cores
.Siehe auch:
quelle
Die Antwort oben,
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.
quelle
Außerdem muss das Verzeichnis / cores vorhanden sein und der Benutzer, der das Programm ausführt, muss über Schreibberechtigungen verfügen.
quelle
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.
quelle