Czy ktoś może mi pomóc napisać program, który może czytać pliki DWARF i podaje mi nazwę pliku, numer linii i nazwę funkcji.Czytanie pliku DWARF w systemie Mac OSX
Odpowiedz
Co to jest plik DWARF? Być może pliki DWARF definiują funkcje jako funkcję (xxx) tak, jak robi to wiele języków. W tym przypadku, sugerujemy użycie grep -n -R "function.*(" /dwarf/*.DWARF
W specyfikacji KARŁOWATA-2 & KARŁOWATA-3 jest tutaj:
http://dwarfstd.org/dwarf-2.0.0.pdf
http://dwarfstd.org/Dwarf3.pdf
Jest przyzwoity biblioteki do odczytu plików karzeł tutaj:
http://reality.sgiweb.org/davea/dwarf.html
Możesz uzyskać i używać tej biblioteki do odczytu plików DWARF (czyta DWARF-2 i DWARF-3) lub możesz zajrzeć do kodu źródłowego, aby dowiedzieć się, jak napisać własny zestaw bibliotek/funkcji do wykonania Praca.
Możesz zajrzeć do avr-readelf w binutils. Funkcja display_debug_lines() w binutils/dwarf.c zajmuje się dekodowaniem informacji o teksturowaniu DWARF.
Ponadto, jak zasugerowano powyżej, można użyć libdwarf. To jest dobra robota ukrywania złożoności niskiego poziomu DWARF i pozwala skupić się na uzyskiwaniu danych.
Po skonfigurowaniu libdwarf z elfdescriptor i coraz struct Dwarf_Debug, można wykonać następujące czynności:
- trawers wszystkich jednostek kompilacji z dwarf_srclines()
- użytku dwarf_srclines() na każdej cu
- użyj dwarf_lineaddr() na każdym wpisie w tablicy zwróconej z dwarf_srclines()
- pamiętaj, aby użyć metody dwarf_dealloc() w odpowiednich miejscach.