GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo provocar mediante programación un volcado del núcleo en C/C++

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.


Linux
  1. ¿Cómo instalar Dotnet Core en Centos 7?

  2. ¿Cómo crear videos programáticamente?

  3. ¿Cómo puede mi aplicación C/C++ determinar si el usuario raíz está ejecutando el comando?

  4. ¿Cómo enumerar las dependencias de la biblioteca estática c/c++?

  5. ¿Cómo es que no se crea un volcado de núcleo cuando una aplicación tiene configurado SUID?

Cómo instalar Windows PowerShell Core 6.0 en Linux

Cómo ejecutar programas C/C++ en Linux [Terminal y Eclipse]

¿Cómo uso GDB en Eclipse para la depuración de C/C++?

¿Cómo volcar el tráfico USB?

¿Cómo establecer la ubicación (y el nombre) del archivo de volcado del núcleo?

Cómo ver el archivo Core (general)