Mon programme est écrit en C++. compilé avec gcc, en utilisant les indicateurs -g3 -O0 -ggdb. Quand il se bloque, je veux ouvrir son core dump. Est-ce que cela crée un fichier de vidage principal, ou dois-je faire quelque chose pour permettre la création de vidage principal, dans le programme lui-même ou sur l'ordinateur sur lequel il est exécuté? Où ce fichier est créé et quel est son nom?
Vous devez définir ulimit -c
. Si vous avez 0 pour ce paramètre, aucun fichier coredump n'est créé. Alors faites ceci: ulimit -c unlimited
et vérifiez si tout est correct ulimit -a
. Le fichier coredump est créé lorsqu'une application a fait par exemple quelque chose d'inapproprié. Le nom du fichier sur mon système est core.<process-pid-here>
.
Vous pouvez le faire de cette façon dans un programme:
#include <sys/resource.h>
// core dumps may be disallowed by parent of this process; change that
struct rlimit core_limits;
core_limits.rlim_cur = core_limits.rlim_max = RLIM_INFINITY;
setrlimit(RLIMIT_CORE, &core_limits);
Par défaut, de nombreux profils sont définis par défaut sur une taille de fichier de base égale à 0 car l'utilisateur moyen ne sait pas quoi faire avec eux.
Essayez ulimit -c unlimited
avant de lancer votre programme.