80 votes

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

Mon programme est écrit en C++, compilé avec gcc, en utilisant les drapeaux -g3 -O0 -ggdb. Quand il se plante, je veux ouvrir son core dump. Est-ce qu'il crée un fichier core dump, ou dois-je faire quelque chose pour permettre la création d'un core dump, dans le programme lui-même, ou sur l'ordinateur où il est exécuté ? Où ce fichier est-il créé, et quel est son nom ?

104voto

skwllsp Points 9661

Vous devez définir ulimit -c . Si vous avez 0 pour ce paramètre, un fichier coredump n'est pas créé. Faites donc ceci : ulimit -c unlimited et vérifier 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> .

49voto

user2167243 Points 191

Vous pouvez le faire de cette façon à l'intérieur d'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);

14voto

msw Points 25319

Par défaut, de nombreux profils ont une taille de fichier de base nulle, car l'utilisateur moyen ne sait pas quoi en faire.

Essayez ulimit -c unlimited avant d'exécuter votre programme.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X