web-dev-qa-db-fra.com

Où sont écrits les vidages mémoire sur Mac?

Sous Mac OS X, si j'envoie SIGQUIT à mon programme C, il se termine, mais il n'y a pas de fichier de vidage de mémoire.

Devez-vous activer manuellement les vidages mémoire sur Mac OS X (comment?), Ou sont-ils écrits ailleurs dans le répertoire de travail?

69
xyz

Il semble qu'ils soient supprimés par défaut. Fonctionnement

$ ulimit -c unlimited

Active les vidages de mémoire pour le terminal actuel, et il sera placé dans/cores/en tant que core.PID. Lorsque vous ouvrez une nouvelle session, elle sera à nouveau définie sur la valeur par défaut.

92
xyz

Sur macOS, vos vidages sur incident sont automatiquement gérés par Crash Reporter .

Vous pouvez trouver des fichiers de trace en exécutant Console et en accédant à la section Rapports de diagnostic utilisateur (sous le groupe 'Informations de diagnostic et d'utilisation') ou vous pouvez les localiser dans ~/Library/Logs/DiagnosticReports.

Vous pouvez également vérifier où les vidages sont générés en surveillant system.log fichier, par exemple.

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

Les fichiers de vidage du noyau que vous pouvez trouver dans /cores.

Voir également:

27
kenorb

La réponse ci-dessus,

ulimit -c illimité

fonctionne - mais assurez-vous de l'exécuter dans le même terminal à partir duquel vous exécuterez le programme qui vide le noyau. Vous devez d'abord exécuter la commande ulimit.

12
Joshua Richardson

par défaut, les répertoires spécifiques de mac osx sont masqués. vous voudrez peut-être activer cette fonctionnalité dans le terminal, puis le vidage de mémoire devrait être visible dans le répertoire/cores.

par défaut, écrivez com.Apple.Finder AppleShowAllFiles TRUE

10
Gnark

En outre, le répertoire/cores doit exister et l'utilisateur exécutant le programme doit avoir des autorisations d'écriture sur celui-ci.

10
user666406