2011-07-06 17 views
5

He escrito una aplicación de manejo de volcado de núcleo personalizado para un proyecto. He cambiado '/ proc/sys/kernel/core_pattern' para llamar a mi dump-handler y se ha invocado con éxito.Formato de archivo de volcado de núcleo

Ahora el problema es guardar el volcado del núcleo en un archivo que puede ser reconocido por gdb. Actualmente mi controlador de volcado lee el volcado de STDIN y lo guarda en un archivo 'core.dump'. Cuando intento cargar este núcleo volcado en GDB me da error:

(gdb) ... is not a core dump: File format not recognized

Cuando corro comando 'archivo' en un núcleo estándar de volcar dame siguiente:

core: ELF 64-bit LSB core file x86-64, version 1 (SYSV), SVR4-style, from './dump_gen'

y por encargo generada volcado, 'archivo' da siguiente:

core.dump: data

Por favor, ¿alguien puede ayudarme a escribir core-dump correctamente para que pueda usarse en gdb?

PD: No quiero utilizar el archivo de volcado de núcleo estándar.

Respuesta

4

Creo que de alguna manera no se escribe todos los datos en el archivo central.

Cree un script simple, hágalo ejecutable y establezca el patrón del núcleo en el script.

#!/bin/sh 
cat > /tmp/core.$$ 

Ahora generar un archivo de núcleo (por ejemplo, ejecutar y pulse sleep 1243ctrl+\) y debería funcionar.

Acabo de probarlo yo mismo en mi sistema y funciona sin problemas.

+0

Gracias por su rápida respuesta. Comprobé tu método y funcionó, así que miré mi código c y encontré el error al copiar datos en un búfer. Funcionó. – AvadhP

+1

También estoy enfrentando el mismo problema pero me pregunto ¿qué harían los pasos anteriores? ¿nos generará un nuevo volcado de núcleo que se puede pasar como argumento a gdb? ¡Gracias! – sad

4

Lo primero que se debe tener en cuenta es el indicador de encabezado Elf que indica qué tipo de archivo es. Tiene cuatro valores: objeto compartido, objeto no vinculado, ejecutable y volcado del núcleo. Es muy probable que sea lo que está causando los errores de gdb.

Además, intente examinarlo con objdump: puede separar todo el archivo ELF para analizar qué parte de él aparentemente no es bueno.

Usted puede encontrar la especificación ELF en http://refspecs.freestandards.org/elf/elf.pdf

Cuestiones relacionadas