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?
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.
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:
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.
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
En outre, le répertoire/cores doit exister et l'utilisateur exécutant le programme doit avoir des autorisations d'écriture sur celui-ci.