web-dev-qa-db-fra.com

Comment générer un fichier core dump dans Ubuntu

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?

22
user496934

Linux

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?


macOS/OS X

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?

43
kenorb

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).

33
Cédric Julien

Définissez une taille maximale de vidage de mémoire avec ulimit -cTAILLE.

0
lhf