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.