Où puis-je trouver le vidage de mémoire dans ubuntu 16.04LTS?

14

J'ai un programme C ++ qui fait ce qu'il est censé faire, mais il doit y avoir un problème avec le pointeur, car il se bloque à la fin et crée un vidage de mémoire. Mon problème est que je ne trouve pas le fichier principal, 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 trouve toujours pas le noyau. J'ai essayé dans chaque dossier écrit ici, mais il semble toujours qu'aucun fichier de base ne soit créé.

Où puis-je le trouver?

mattiav27
la source
Répertoire actuel, ou/var/crash
waltinator
4
Bien que cela soit vrai dans la plupart des cas, @waltinator, il est parfois nécessaire de vérifier /var/log/apport.log, car les versions modernes d'Ubuntu utilisent Apport, ce qui peut interférer avec le vidage de mémoire de manière non évidente. Voir stackoverflow.com/a/18368068/1772379 pour plus d'informations.
Ben Johnson

Réponses:

12

Dans Ubuntu, les vidages mémoire sont gérés par Apport et peuvent être localisé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.serviceou sudo service apport start.


Pour désactiver, exécutez: sudo systemctl disable apport.serviceou sudo service apport stopafin de revenir à la méthode habituelle de vidage de mémoire. Voir: Comment activer ou désactiver Apport? .

Pour désactiver définitivement, modifiez le /etc/apport/crashdb.conffichier 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 rapport de plantage (de retour à la normale), supprimez le symbole de hachage (le même qu'il était).


Vous pouvez également vérifier core_patterncomment les vidages mémoire 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, apportcaptureront toujours le crash.

Voir également:

Kenorb
la source
3

Pour ces googlin ': (dans mon cas - Ubuntu 16.04 et 18.04 et une application personnalisée) /var/crashétait toujours vide, donc un moyen rapide de gérer la création du noyau (à condition que vous utilisiez par exemple un paramètre intégré ulimit pertinent ) était

sudo sysctl -w kernel.core_pattern=core.%u.%p.%t # to enable core generation

et

systemctl restart apport # to restore default apport settings
# which, by the way, were "|/usr/share/apport/apport %p %s %c %d %P" (without quotes)


Sources:

ジ ョ ー ジ
la source
Simple, direct, travaillé.
Taekahn