2009-05-03 11 views

risposta

-5

Che cos'è un file DWARF? Forse i file DWARF definiscono le funzioni come funzione (xxx) come fanno molte lingue. In quel caso, io suggerisco di usare grep -n -R "function.*(" /dwarf/*.DWARF

1

Si potrebbe dare un'occhiata a avr-readelf in binutils. La funzione display_debug_lines() in binutils/dwarf.c svolge il compito di decodificare le informazioni del numero di biancheria DWARF.

Inoltre, come suggerito sopra, è possibile utilizzare libdwarf. Questo fa un buon lavoro di nascondere le complessità di basso livello di DWARF e ti permette di concentrarti su come ottenere i dati.

Dopo aver impostato libdwarf con un'elfdescriptor e di ottenere una struct Dwarf_Debug, è possibile effettuare le seguenti:

  1. Traverse tutte le unità di compilazione con dwarf_srclines()
  2. uso dwarf_srclines() su ogni cu
  3. usa dwarf_lineaddr() su ogni voce dell'array restituita da dwarf_srclines()
  4. ricorda di usare dwarf_dealloc() nei posti giusti.