web-dev-qa-db-fra.com

Changement d'emplacement du core dump

Je souhaite modifier l'emplacement par défaut des fichiers de vidage principaux de manière à ce que chaque fois qu'un vidage principal soit généré, il se place dans ce répertoire. De plus, est-il possible d'enregistrer le fichier de vidage sous le nom du fichier bloqué à cet emplacement?

34
rogue_knight9

Oui, ça l'est. Vous pouvez changer /proc/sys/kernel/core_pattern pour définir le chemin utilisé pour générer le corefile. Pour plus, voir man core

exemple:

echo '/tmp/core_%e.%p' | Sudo tee /proc/sys/kernel/core_pattern    # `tee' instead of > so that
                                                                   # opening happens in the
                                                                   # elevated process

provoquerait la génération de tous les futurs fichiers core dans /tmp et être nommé core_[program].[pid]

59
mata

Avant de suivre les instructions de la réponse acceptée, il peut être intéressant de vérifier le contenu de /proc/sys/kernel/core_pattern pour voir si le système Redhat abrt est utilisé.

-> cat /proc/sys/kernel/core_pattern
|/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e

Si cela est utilisé, vous disposez déjà d'un système assez complet de gestion des fichiers de base que vous souhaitez comprendre avant de le remplacer.

En bref, à propos:

  1. met les fichiers core ici: /var/spool/abrt/
  2. a une interface utilisateur qui est démarrée avec la commande abrt-gui
  3. ajoute au corefile des informations supplémentaires sur le processus en échec.
  4. est configuré avec ce fichier: /etc/abrt/abrt-action-save-package-data.conf

L’un des obstacles les plus courants à l’utiliser est de changer cette ligne dans le fichier de configuration:

ProcessUnpackaged = no

Changez-le en oui pour capturer les fichiers core à partir de vos processus homebrew, sinon, seuls les fichiers core seront capturés à partir des programmes installés par le gestionnaire de paquets.

[EDIT pour répondre à l'utilisation de coredump] Pour examiner un fichier core, je fais ceci:

cd /var/spool/abrt/XXXXXXX
gdb $(cat executable) coredump

Il existe peut-être un meilleur moyen de le faire, mais gdb m’a bien servi et je n’ai donc pas cherché d’autres moyens. Il suffit de remplacer XXXXXXX par le dossier contenant votre fichier coredump. La commande gdb est prête à être copiée et collée.

Les références:

Livre Redhat

Forum CentOS

26
Michael Potter