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?
/var/crash
/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.Réponses:
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.service
ousudo service apport start
.Pour désactiver, exécutez:
sudo systemctl disable apport.service
ousudo service apport stop
afin 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.conf
fichier et commentez la ligne suivante: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_pattern
comment les vidages mémoire sont gérés par le noyau:Ainsi, même les fichiers de base sont désactivés par
ulimit
,apport
captureront toujours le crash.Voir également:
la source
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 ) étaitet
Sources:
la source