2011-07-06 15 views
5

Ho scritto un'applicazione di gestione core-dump personalizzata per un progetto. Ho cambiato '/ proc/sys/kernel/core_pattern' per chiamare il mio dump-handler e il suo invocato correttamente.Formato file core-dump

Ora il problema è salvare il core-dump in un file che può essere riconosciuto da gdb. Attualmente il mio dump-handler legge il dump da STDIN e lo salva in un file 'core.dump'. Quando provo a caricare questo core dump in gdb mi dà errore:

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

Quando eseguo comando 'file' su un core standard discarica darmi seguente:

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

e per personalizzato generato discarica, 'file' pronunciato seguente:

core.dump: data

Per favore qualcuno può aiutarmi a scrivere correttamente core-dump in modo che possa essere usato in gdb.

PS: Non voglio utilizzare il file di dump core standard.

risposta

4

Penso che in qualche modo non si scrive tutti i dati al file core.

Creare uno script semplice, renderlo eseguibile e impostare il modello principale per lo script.

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

Ora generare un file core (ad esempio eseguire sleep 1243 e premere ctrl+\) e dovrebbe funzionare.

L'ho appena testato sul mio sistema e funziona senza problemi.

+0

Grazie per la risposta rapida. Ho controllato il tuo metodo e ha funzionato, quindi ho guardato il mio codice c e ho trovato il bug nella copia dei dati in un buffer. Ha funzionato. – AvadhP

+1

Anche io sto affrontando lo stesso problema ma mi chiedo solo cosa farebbero i passaggi precedenti? ci genererà un nuovo core dump che può essere passato come argomento a gdb? Grazie! – sad

4

La prima cosa da verificare che viene in mente è il flag di intestazione Elf che indica che tipo di file è. Ha quattro valori: oggetto condiviso, oggetto non collegato, eseguibile e core dump. È molto probabile che cosa stia causando errori di gdb.

Inoltre, prova ad esaminarlo con objdump: esso può separare l'intero file ELF per l'analisi di quale parte di esso apparentemente non è buona.

È possibile trovare le specifiche ELF a http://refspecs.freestandards.org/elf/elf.pdf

Problemi correlati