Hace unos años, Google lanzó la biblioteca coredumper.
Resumen
La biblioteca coredumper se puede compilar en aplicaciones para crear volcados del núcleo del programa en ejecución, sin terminar. Admite volcados de núcleo de uno o varios subprocesos, incluso si el kernel no admite de forma nativa archivos de núcleo de subprocesos múltiples.
Coredumper se distribuye bajo los términos de la Licencia BSD.
Ejemplo
Este no es de ninguna manera un ejemplo completo; simplemente le da una idea de cómo se ve la API coredumper.
#include <google/coredumper.h>
...
WriteCoreDump('core.myprogram');
/* Keep going, we generated a core file,
* but we didn't crash.
*/
No es lo que estabas pidiendo, pero tal vez sea incluso mejor :)
Subida de la señal número 6 (SIGABRT
en Linux) es una forma de hacerlo (aunque tenga en cuenta que SIGABRT no es requerido ser 6 en todas las implementaciones POSIX, por lo que es posible que desee utilizar el SIGABRT
se valora a sí mismo si se trata de otra cosa que no sea un código de depuración rápido y sucio).
#include <signal.h>
: : :
raise (SIGABRT);
Llamando a abort()
también provocará un volcado del núcleo, e incluso puede hacerlo sin terminando su proceso llamando a fork()
seguido de abort()
solo en el niño:consulte esta respuesta para obtener más detalles.