Je voudrais savoir comment générer un fichier core dump dans Ubuntu. J'utilise Ubuntu 8.04.1 et le compilateur gcc 4.2.3. J'ai écrit un programme simple en C pour générer un vidage mémoire. J'ai compilé le programme sous le format - gcc -g badpointer.c. Lorsque j'exécute le programme, il donne une erreur de segmentation, mais aucun vidage de mémoire principal n'est généré. Que dois-je faire de plus pour générer un fichier core dump?
Activez vos coredumps en:
ulimit -c unlimited
Aussi, vérifiez:
$ sysctl kernel.core_pattern
pour voir où vos vidages sont créés (%e
sera le nom du processus et %t
sera l’heure du système).
Vous pouvez le changer dans /etc/sysctl.conf puis le recharger par sysctl -p
.
Vous pouvez le tester par:
sleep 10 &
killall -SIGSEGV sleep
Si la sauvegarde du noyau réussit, vous verrez «(noyau déchargé)» après l'indication de faute de segmentation.
Voir également:
Ubuntu
Si vous avez Ubuntu, vos dumps sont créés par Apport in /var/crash
, mais il est désactivé par défaut.
Pour plus de détails, consultez: Où puis-je trouver le core dump dans Ubuntu?
Dans macOS, les vidages sur incident sont créés automatiquement par Crash Reporter sous la forme de traces (backtraces) . Vous pouvez trouver ces fichiers sur incident en exécutant Console et en vous rendant dans la section 'Rapports de diagnostic de l'utilisateur' (dans Informations d'utilisation ') ou vous pouvez les localiser dans ~/Library/Logs/DiagnosticReports
.
Les fichiers de base réels sont générés dans /cores
.
En savoir plus: Comment générer des core dumps sous Mac OS X?
Vérifiez la sortie de ulimit -c
. Si la sortie est 0, c'est pourquoi vous n'avez pas de noyau vidé.
Utilisation
ulimit -c unlimited
pour permettre la création de base (peut-être remplacer unlimited
par une taille limite plus sécurisée).
Définissez une taille maximale de vidage de mémoire avec ulimit -c
TAILLE.