Forzar un núcleo para volcar desde un programa activo que normalmente se ejecuta en FreeBSD
coredump (4)
En sles12 .. Código debajo funcionó para mí:
kill -11
Las sugerencias anteriores no hicieron nada.
Estoy escribiendo el código de manejo de errores para un servidor en FreeBSD. Para errores extremadamente graves, quiero evitar la corrupción de datos terminando inmediatamente. Eso es fácil, exit(3)
. Antes de salir, saco mis variables relevantes que me llevaron allí. Sin embargo, idealmente, esta terminación estaría acompañada por un .core
para que pudiera investigar completamente lo que me llevó a este estado catastrófico (y probablemente difícil de reproducir).
¿Cómo puedo forzar que esto suceda?
También es posible que desee echar un vistazo a gcore (1) ( http://man.freebsd.org/gcore ).
This me ayudó! kill -11
siempre funciona para mi. 11 es SIGSEGV (referencia de memoria inválida)
kill -QUIT process_id
causará un volcado del núcleo de un proceso en ejecución (suponiendo que los límites de recursos lo permitan).
O vea man 3 abort
a man 3 abort
por causar que un programa se descargue solo.
Añadido : desde un shell interactivo, se puede hacer que un programa en ejecución aborte con la tecla para salir, normalmente Ctrl + / , que envía un SIGQUIT del mismo modo que cuanto más común Ctrl + C envía un SIGINT. Esto es idéntico al kill -QUIT…
es más fácil de escribir si está en el terminal de control. Consulte el man 1 stty
si su clave de salida predeterminada es diferente.