web-dev-qa-db-fra.com

Où puis-je trouver le vidage de noyau dans Ubuntu 16.04LTS?

J'ai un programme C++ qui fait ce qu'il est censé faire, mais il doit y avoir un problème de pointeur, car il se bloque à la fin et crée un vidage mémoire. Mon problème est que je ne peux pas trouver le fichier core, donc je ne peux pas le déboguer.

J'ai essayé

ulimit -c unlimited
ulimit -a

et maintenant la dimension du fichier est définie sur illimité, mais je ne parviens toujours pas à trouver le noyau. J'ai essayé dans chaque dossier écrit ici mais il semble toujours qu'aucun fichier de base n'est créé.

Où puis-je le trouver?

7
mattiav27

Dans Ubuntu, les core dumps sont gérés par Apport et peuvent être situés dans /var/crash/. Mais il est désactivé par défaut dans les versions stables.

Pour activer Apport, exécutez: Sudo systemctl enable apport.service ou Sudo service apport start.


Pour désactiver, exécutez: Sudo systemctl disable apport.service ou Sudo service apport stop afin de revenir à la méthode de vidage de base standard. Voir: Comment activer ou désactiver Apport? .

Pour désactiver définitivement, éditez le fichier /etc/apport/crashdb.conf et commentez la ligne suivante:

'problem_types': ['Bug', 'Package'],

en ajoutant un symbole de hachage (#) au début de la ligne.

Pour désactiver le signalement des incidents (retour à la normale), supprimez le symbole dièse (identique à celui-ci).


Vous pouvez également vérifier core_pattern, comment les vidages de base sont gérés par le noyau:

$ cat /proc/sys/kernel/core_pattern
|/usr/share/apport/apport %p %s %c

Ainsi, même les fichiers de base sont désactivés par ulimit, apport capturera toujours le blocage.

Voir également:

3
kenorb