web-dev-qa-db-fra.com

Comment activer le core dump dans mon programme Linux C ++

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?

79
Alex F

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>.

104
Sergei Kurenkov

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);
47
user2167243

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.

14
msw