GNU/Linux >> Tutoriels Linux >  >> Linux

Comment provoquer par programme un core dump en C/C++

Il y a quelques années, Google a publié la bibliothèque coredumper.

Aperçu

La bibliothèque coredumper peut être compilée dans des applications pour créer des vidages mémoire du programme en cours d'exécution - sans se terminer. Il prend en charge les vidages de mémoire mono- et multi-thread, même si le noyau ne prend pas en charge nativement les fichiers de base multi-thread.

Coredumper est distribué sous les termes de la licence BSD.

Exemple

Ce n'est en aucun cas un exemple complet; cela vous donne simplement une idée de ce à quoi ressemble l'API coredumper.

#include <google/coredumper.h>
...
WriteCoreDump('core.myprogram');
/* Keep going, we generated a core file,
 * but we didn't crash.
 */

Ce n'est pas ce que vous demandiez, mais c'est peut-être encore mieux :)


Montée du signal numéro 6 (SIGABRT sous Linux) est une façon de le faire (mais gardez à l'esprit que SIGABRT n'est pas requis être 6 dans toutes les implémentations POSIX, vous pouvez donc utiliser le SIGABRT valeur elle-même s'il s'agit d'autre chose que du code de débogage rapide).

#include <signal.h>
: : :
raise (SIGABRT);

Appel abort() provoquera également un vidage de mémoire, et vous pouvez même le faire sans terminer votre processus en appelant fork() suivi de abort() chez l'enfant uniquement - voir cette réponse pour plus de détails.


Linux
  1. Comment installer Dotnet Core sur Centos 7 ?

  2. Comment obtenir par programme la taille de la page de cache CPU en C++ ?

  3. Comment mon application C/C++ peut-elle déterminer si l'utilisateur root exécute la commande ?

  4. Comment lister les dépendances de la bibliothèque statique c/c++ ?

  5. Comment se fait-il qu'aucun vidage de mémoire ne soit créé lorsqu'une application a défini SUID ?

Comment installer et configurer Nagios Core sur Raspberry PI

Comment installer Windows PowerShell Core 6.0 sous Linux

Comment exécuter des programmes C/C++ sous Linux [Terminal &Eclipse]

Comment utiliser GDB dans Eclipse pour le débogage C/C++ ?

Comment obtenir le nom d'utilisateur en C/C++ sous Linux ?

Comment afficher le fichier Core (général)