Je suis sur CentOS 6, j'essaye d'activer les vidages mémoire pour une application que je développe. J'ai mis:
ulimit -H -c unlimited >/dev/null
ulimit -S -c unlimited >/dev/null
dans mon profil bash, mais un vidage de mémoire n'a toujours pas généré (dans un nouveau terminal).
J'ai également changé mon /etc/security/limits.conf afin que les limites logicielles soient nulles pour tous les utilisateurs.
Comment définir l'emplacement des fichiers principaux à afficher? Je voulais spécifier l'emplacement et ajouter l'heure à laquelle le vidage a été généré, dans le cadre du nom de fichier?
Réponses:
Pour définir l'emplacement des vidages mémoire dans CentOS 6, vous pouvez les modifier
/etc/sysctl.conf
. Par exemple, si vous voulez des vidages mémoire dans/var/crash
:Où les variables sont:
Vous devez également ajouter
/etc/sysconfig/init
Appliquez maintenant de nouvelles modifications:
Mais il y a une mise en garde de cette façon. Si le paramètre du noyau kernel.core_pattern est toujours réinitialisé et remplacé au redémarrage dans la configuration suivante même lorsqu'une valeur est spécifiée manuellement dans
/etc/sysctl.conf
:Bref quand les
abrtd.service
démarrageskernel.core_pattern
sont écrasés automatiquement par le système installéabrt-addon-ccpp
. Il existe deux façons de résoudre ce problème:DumpLocation
Option de paramétrage dans le/etc/abrt/abrt.conf
fichier de configuration. Le répertoire de destination peut être spécifié en définissant DumpLocation =/var/crash
dans le/etc/abrt/abrt.conf
fichier de configuration, etsysctl kernel.core_pattern
la valeur affichée est la même, mais en réalité le fichier principal sera créé dans le répertoire sous/var/crash
.De plus, si SELinux est activé, vous devez exécuter:
Et enfin redémarrez
abrtd.service
:Arrêtez le service abrtd.
kernel.core_pattern
ne sera pas écrasé. - (je n'ai jamais testé).la source
Pour générer le vidage de mémoire sur Busybox, nous pouvons ajouter les paramètres ci-dessous dans le script d'initialisation qui exécute notre exécutable. Donc, chaque fois que nous initialisons le logiciel et exportons des variables d'environnement, nous pouvons copier les lignes ci-dessous dans le script ainsi que vider le noyau au cas où nous verrions un plantage.
Pour définir l'emplacement des vidages mémoire dans Busybox, vous pouvez définir le chemin du fichier mémoire à l'aide du système de fichiers proc. Par exemple, si vous souhaitez des vidages de mémoire dans
/tmp/crash/corefiles
:Où les variables sont:
En outre, vous devez définir la taille du fichier principal, la commande ci-dessous définit la taille du fichier principal sur illimité
Maintenant, pour vérifier la taille de fichier de base définie pour chaque thread dans un processus, nous pouvons vérifier en utilisant
La sortie de la commande ci-dessus:
Comme nous pouvons le voir sur la sortie ci-dessus, la taille maximale du fichier core est définie sur illimitée.
Pour plus d'informations, veuillez visiter ce lien. Techniques de débogage d'applications Linux / Fichiers de base
la source