Jest to polecenie dwarfdump, które można uruchomić w darmowym dostawcy usług hostingowych OnWorks przy użyciu jednej z wielu naszych bezpłatnych stacji roboczych online, takich jak Ubuntu Online, Fedora Online, emulator online systemu Windows lub emulator online MAC OS
PROGRAM:
IMIĘ
dwarfdump - zrzuca informacje debugowania DWARF obiektu ELF
STRESZCZENIE
krasnoludek [opcje] nazwaplikuobiektu
OPIS
krasnoludek polecenie drukuje lub sprawdza sekcje DWARF zgodnie z żądaniem określonych opcji.
Bez opcji (ale z wymaganym nazwaplikuobiektu ) drukowane są wszystkie sekcje (ale niektóre
sekcji nie można bezpiecznie wydrukować niezależnie, więc są one drukowane tylko z przesunięciem
gdzie sekcja .debug_info odnosi się do tych sekcji).
Od czerwca 2011 opcje drukowania i opcje sprawdzania wykluczają się wzajemnie (jeśli
wybrano opcje sprawdzania, szczegóły sekcji nie są drukowane). Kiedy są błędy
napotkany dwarfdump próbuje wydrukować wystarczający kontekst, aby można go było zrozumieć
dokładnie tam, gdzie jest błąd w DWARF. Ta zmiana sprawia, że sprawdzanie jest naprawdę dużym obiektem
pliki są znacznie łatwiejsze.
Format ma być czytelny dla człowieka. Jeśli skrypt ma analizować dane wyjściowe, plik -d
opcja jest przydatna.
Nie wszystkie sekcje faktycznie istnieją w danym pliku obiektowym.
Format może się zmieniać z wydania na wydanie, więc niemądre jest zbytnie poleganie na nim
format.
Informacje o ramce (.debug_frame i .eh_frame) są silnie zależne od ABI/ISA
plik obiektowy. Domyślnie używamy ogólnego zestawu nazw rejestrów obsługujących do 100
rejestry o nazwach r0-100. Opcja '-R' używa wbudowanego ogólnego zestawu nazw rejestrów
obsługa do 1200 rejestrów o nazwach r0-r1199. Funkcja „-x abi= ' opis poniżej pokazuje
jak nazwać abi i użyć go do kierowania przetwarzaniem -f lub -F. Chyba że procesor do
zrzucany plik obiektowy ma wiele rejestrów, nie używaj -R ani -x abi=generic, ponieważ mogą
być niepotrzebnie powolnym zrzucaniem sekcji ramy. Zamiast tego użyj poprawnego abi (jeśli istnieje w
dwarfdump.conf) lub ogólny, taki jak -x abi=generic100 lub -x abi=generic500. dostać
MIPS/IRIX rejestruje nazwy nazw i wywołuje stary interfejs ramek libdwarf w wersji 2
opcja „-x abi=mips”. Bez '-R' lub '-x abi= ' dwarfdump ignoruje plik dwarfdump.conf
plik i wykorzystuje skompilowany ogólny zestaw nazw rejestrów. Jeśli nie ma „-x nazwa= ' jest podawany,
dwarfdump szuka „./dwarfdump.conf”, „$HOME/.dwarfdump.conf”, „
prefix>/lib/dwarfdump.conf” i bierze pierwszy znaleziony. Jeśli jeden lub więcej „-x nazwa= '
podany jest ostatni z nich, a wszystkie inne takie pliki są ignorowane.
Niektóre opcje -k (sprawdzające) wypisują tak zwane nieszkodliwe błędy. To są błędy kompilatora
które nie powodują żadnego znanego problemu i są wykrywane tylko w samym libdwarf. Te
są trudne do prawidłowego zgłoszenia w dwarfdump, a wszelkie ciągi błędów mogą nie wydawać się bliskie
do czasu wystąpienia błędu.
URI STYL WEJŚCIE SMYCZKI
The a opcje pobierające ciągi nazw wyszukują identyfikatory URI i tłumaczą
Domyślnie łańcuchy URI zamieniają się w znaki (patrz -x, -c , -S, -u). Więc każdy pojedynczy %
znak jest traktowany tak, jakby następujące dwa znaki były cyframi szesnastkowymi reprezentującymi
ukryty prawdziwy charakter. Różne znaki mają znaczenie dla powłok (takie jak bash lub
sh) i getopt (takie jak znak spacji) Jeśli translacja URI coś robi, to
drukuje przed i po translacji URI na standardowym wyjściu, więc inspekcja
pierwsze wiersze wyjścia pokażą, czy URI coś zrobił. Same opcje
zakłada się, że nie są identyfikatorami URI. Tak więc w opcji „-cS&T” część -c musi być inna niż URI, ale
znak & może powodować problemy z wprowadzaniem, więc zamiast tego można użyć „-cS%26T”. Właściwie
wprowadź pojedynczy znak % (na przykład w nazwie), podwój go do %% w wierszu poleceń.
Opcje -U (wyłączenie interpretacji URI) i -q (wyciszenie wyszukiwania sekwencji URI)
zapewniają lepszą kontrolę nad interpretacją identyfikatorów URI. PP Jako przykład, aby uzyskać ciąg znaków'a b', wykonaj
string 'a%20b' (tutaj cudzysłów (') nie jest częścią ciągu znaków, ale cytat
jest z pewnością problematyczne w nazwie). Zamiast uciekać " cudzysłowów w ciągu, wpisz
%25, jak w
'a "b" należy wpisać 'a% 20% 25b' W stylu URI można wpisać dowolne znaki, nie tylko
znaki, które są problematyczne dla powłoki lub getopt. Zdecydowanie zalecamy, aby nie pisać
Znaki w stylu URI, jeśli nie są potrzebne, lub użyj samego znaku % w poleceniu
ciągi linii, chyba że musisz.
NADRUKI OPCJE
-a Wydrukuj każdą sekcję tak niezależnie, jak to możliwe. Sekcje, które mogą być bezpiecznie
wydrukowane niezależnie (jak .debug_abbrev) mają odpowiednie informacje wydrukowane w raporcie
(czasami zależne od -v).
-b Wydrukuj sekcję .debug_abbrev. Bo specyfikacje DWARF nie wykluczają
śmieciowe obszary danych w .debug_abbrev (jeśli nie ma do nich odniesień z .debug_info)
wszelkie bajty śmieci mogą spowodować niepowodzenie drukowania.
-c Wydrukuj listy lokalizacji.
-f Wydrukuj sekcję .debug_frame.
-F Wydrukuj sekcję .eh_frame.
-i Wydrukuj sekcję .debug_info.
-l Wydrukuj sekcję .debug_info i powiązane dane sekcji linii.
-m Wydrukuj sekcję .debug_macinfo.
-N Wydrukuj sekcję .debug_ranges. Bo specyfikacje DWARF nie wykluczają
śmieciowe obszary danych w .debug_ranges (jeśli nie ma do nich odniesienia z .debug_info)
wszelkie bajty śmieci mogą spowodować niepowodzenie drukowania.
-p Wydrukuj sekcję .debug_pubnames.
-r Wydrukuj sekcję .debug_aranges.
-s Wydrukuj sekcję .debug_string.
-ta Wydrukuj tylko sekcje IRIX .debug_static_funcs i .debug_static_vars.
-tf Wydrukuj tylko sekcję IRIX .debug_static_funcs.
-telewizja Wydrukuj tylko sekcję IRIX .debug_static_vars.
-w Wydrukuj sekcję .debug_weaknames tylko dla IRIX.
-y Wydrukuj sekcję .debug_pubtypes (i .debug_typenames, sekcję tylko dla SGI IRIX).
Posiadanie relokacji wydruku dwarfdump może pomóc w ustaleniu, czy dwarfdump je rozumie
relokacje, które mogą istnieć.
-o Wydrukuj wszystkie rekordy relokacji, jak również możemy zarządzać.
-oj Wydrukuj relokacje .rel*debug_info.
-ol Wydrukuj relokację .rel*debug_line.
- op Wydrukuj relokację .rel*debug_pubnames.
-oa Nie ma wpływu.
Lub Wydrukuj relokacje .rel*debug_aranges.
-z Wydrukuj relokacje .rel*debug_frame.
-oo Wydrukuj relokacje .rel*debug_loc.
-Lub Wydrukuj relokacje .rel*debug_ranges.
-g Zwykle używane tylko do testowania libdwarf, mówi to dwarfdumpowi, aby wydrukował .debug_info
i użyj starszej funkcji interfejsu dwarf_loclist() (funkcji, której nie można obsłużyć
wszystkie aktualne listy lokalizacji).
-V Wydrukuj łańcuch daty/wersji dwarfdump i zatrzymaj się.
SPRAWDŹ OPCJE
-cg Ogranicza sprawdzanie do kompilatorów, których łańcuch producenta zaczyna się od „GNU” i obraca
wyłączone -cs .
-cs Ogranicza sprawdzanie do kompilatorów, których łańcuch producenta zaczyna się od „SN” i obraca
wyłączone -cg .
-cname Ogranicza sprawdzanie do kompilatorów, których łańcuch producenta zawiera „nazwę” (nie wielkość liter
wrażliwy). „Nazwa” jest odczytywana jako ciąg URI.
-ka : Włącza on cała kolekcja kontrola Opcje z wyjątkiem -kxe (-kx może
być wystarczająco powolny, aby nie chcieć go rutynowo używać).
-kb : Wykrywanie urządzeń szpiegujących dla pewien skróty Sekcja błędy jeśli chodzi o komunikację i motywację czytanie
WYMIARKI.
-kc Sprawdza błędy w stałych w debug_info.
-kd Włącza pełne raportowanie sum błędów na producenta. (domyślnie pokazuje mniej
Szczegół).
-ke Włącza odczytywanie nazw pubów i sprawdzanie błędów fde.
-kf Włącza sprawdzanie błędów FDE.
-kF Włącza sprawdzanie błędów tabeli wierszy.
-kg Włącza sprawdzanie nieużywanych luk w .debug_info (te luki nie są błędem, tylko
strata miejsca).
-ki Powoduje wydrukowanie podsumowania wyników sprawdzania dla każdego kompilatora (producenta).
koniec.
-kl Włącza sprawdzanie listy lokalizacji.
-km Włącza sprawdzanie zakresów.
-kM Włącza sprawdzanie aranżacji.
-kr Włącza sprawdzanie kombinacji tag-attr DIE.
-kR Włącza odczyt DIE i sprawdzanie deklaracji forward z DW_AT_specification
atrybuty. (które nie są błędem, ale mogą być źródłem nieefektywności dla
debugery).
- ks Włącza dodatkowe raportowanie dla niektórych błędów DIE wykrytych przez sprawdzanie.
-kS Włącza sprawdzanie odniesień DIE pod kątem odniesień cyklicznych.
-kt Włącza sprawdzanie kombinacji tag-tag.
-kx Włącza check_frames.
-kxe Wyłącza podstawowe check_frames i włącza rozszerzone sprawdzanie ramek.
-ky Włącza sprawdzanie type_offset, decl_file,
OPCJA MODYFIKATORY
-C Zwykle podczas sprawdzania kombinacji tag-tag lub tag-atrybut oba są standardem
dozwolone są kombinacje i niektóre typowe rozszerzenia. Z -C rozszerzenia są
wyjęte z dozwolonej klasy kombinacji.
-d Podczas drukowania KOSTEK umieść wszystkie atrybuty dla każdej KOSTKI w tej samej (długiej) linii co
metka. To sprawia, że wyszukiwanie informacji DIE (jak w przypadku grep) jest znacznie prostsze
cała KOSTKA jest w jednej linii.
-D Wyłącza wyświetlanie przesunięć sekcji i wartości atrybutów na wydruku.
Tak więc wyjście .debug_info to tylko TAGi i atrybuty. Dla nazw pubów (i tym podobnych)
usuwa przesunięcia z wyjścia. W przypadku list lokalizacji usuwa przesunięcia
wyjście, ale jest to bezużyteczne, ponieważ wartości atrybutów nie są wyświetlane, więc też nie
czy dane o lokalizacji.
-e Włącza obcinanie nazw atrybutów i znaczników. Na przykład DW_TAG_foo staje się
bla . Niekompatybilny ze sprawdzaniem, przydatny tylko do drukowania matryc.
-G Podczas drukowania dodaj globalne przesunięcia do drukowanych przesunięć.
-H numer
Podczas drukowania lub sprawdzania .debug_info kończy to wyszukiwanie po „liczbie”
jednostki kompilacji. Podczas drukowania informacji o ramce kończy to FDE
raportowanie po „liczbie” FDE i raportowanie CIE (co ma miejsce, jeśli doda się -v)
po „liczbie” CIE. Przykład „-H 1”
-M Podczas drukowania oznacza to, że chcesz wyświetlić FORM dla każdego atrybutu. Jeśli
-v jest również dodawane (lub więcej niż jeden), a następnie dodawane są również szczegóły dowolnej formy pośredniej
pokazane.
-n Podczas drukowania ramek wyłącza to wyszukiwanie nazw funkcji. w naprawdę
duży obiekt, wyszukiwanie może zająć więcej czasu, niż ktoś chce czekać, więc tego unika
poszukiwanie.
-Q Pomija drukowanie danych przekroju (ustawiane automatycznie z opcją sprawdzania).
-R W przypadku drukowania ramek dla ABI z wieloma rejestrami, pozwala to na maksymalnie 1200
rejestry, które mają być nazwane (jak R999) bez wybierania ABI, na przykład „-x
abi=ppc'
-v Zwiększa szczegółowość pokazywaną podczas drukowania. W niektórych sekcjach użycie więcej opcji -v
zwiększy szczegółowość (od jednego do trzech są przydatne) lub może zmienić raport na
pokaż, na przykład, rzeczywiste polecenia-dane-linii zamiast wynikowej linii-
tabela.
SELEKTYWNY WEJŚCIE NADRUKI
Te opcje -S są samodzielne i zawierają podstawowe informacje o jednostce kompilacji i
DIE, gdzie pojawiają się ciągi. Co najwyżej jeden z każdego z poniższych jest skuteczny (tak dla
przykład można mieć tylko jedno „dopasowanie”, ale można mieć „dopasowanie”, „dowolne” i
„wyrażenie regularne”). Dowolne -S powoduje sprawdzenie sekcji .debug_info. Brak opcji sprawdzania lub
opcje drukowania powinny być dostarczone z -S.
-S dopasowanie=ciąg
Podczas drukowania DIE dla każdej wartości tagu lub nazwy atrybutu, która pasuje do „ciągu”
dokładnie wydrukować informacje o jednostce kompilacji i jej przesunięciu sekcji. Dowolny CU z
żadne dopasowanie nie jest drukowane. „Ciąg” jest odczytywany jako ciąg URI.
-S dowolny=ciąg
Podczas drukowania DIE dla każdej wartości tagu lub nazwy atrybutu, która zawiera „ciąg”
gdzieś w tagu lub atrybucie (wielkość liter nie ma znaczenia) wypisz jednostkę kompilacji
informacje i przesunięcie sekcji. Żadna jednostka CU bez dopasowania nie jest drukowana. The
„string” jest odczytywany jako ciąg URI.
-S wyrażenie regularne=ciąg
Podczas drukowania DIE dla każdej wartości znacznika lub nazwy atrybutu, w których wymagany jest „łańcuch”.
wyrażenia pasujące do siebie wyświetlają informacje o jednostce kompilacji i jej przesunięciu sekcji.
Żadna jednostka CU bez dopasowania nie jest drukowana. „Ciąg” jest odczytywany jako ciąg URI.
Ciąg nie może zawierać spacji ani innych znaczących znaków getopt(3) i
powłoka usunie cudzysłowy i inne znaki. Zakłada się więc, że ciąg jest w środku
styl URI i jest tłumaczony. Innymi słowy, aby dopasować „ab”, wykonaj ciąg -S „a%20b”
Zamiast uciekać przed " cudzysłowami w ciągu, wpisz %25, jak w
'a' b' powinno być wpisane 'a%20%25b' (' są tutaj dla ekspozycji, a nie jako część
smyczki). W stylu URI można wpisać dowolne znaki, a nie tylko znaki, które są
problematyczne dla powłoki lub getopt.
Opcje -S any= i -S regex= są użyteczne tylko wtedy, gdy wymagane są funkcje biblioteczne
znalezione w czasie konfiguracji.
Opcja -W jest modyfikatorem opcji -S i zwiększa wielkość wyjścia -W
wydruki. Teraz pokażemy opcję -W w kontekście z opcją -S.
-S dopasowanie=ciąg1 -W
Drukuje drzewo nadrzędne i drzewo podrzędne dla DIE, które pasują do -S.
-S dopasowanie=ciąg2 -WP
Drukuje drzewo nadrzędne dla DIE, które pasują -S.
-S dopasowanie=ciąg3 -Toaleta
Drukuje drzewo nadrzędne dla DIE, które pasują -S.
INNE OPCJE
-# numer
Ta opcja kontroluje wewnętrzne wyjście debugowania, wyższe liczby oznaczają więcej debugowania
działania. Zobacz kod źródłowy.
-x nazwa=/p/a/t/h.conf
Podana ścieżka do pliku to nazwa pliku, który ma być plikiem podobnym do dwarfdump.conf.
Ścieżka do pliku jest odczytywana jako ciąg URI.
-x abi=ppc
Wybiera abi (z pliku dwarfdump.conf) do użycia w ramce drukowania
information (tutaj na przykładzie ppc). Abi jest odczytywane jako ciąg URI.
-P Po zaznaczeniu tego dodaje listę nazw jednostek kompilacji widzianych dla każdego producenta-
kompilator do wydrukowanych wyników sprawdzania.
-q Gdy URI zostanie znaleziony i przetłumaczony podczas czytania wiersza poleceń, bądź cicho
tłumaczenie URI. Oznacza to, że nie należy drukować wersji oryginalnej i przetłumaczonej
smyczki.
-E Włącza drukowanie danych nagłówka wewnętrznego obiektu dla niektórych systemów (dla systemów Unix/Linux tak
Nic).
-u kuname
Włącza selektywne drukowanie DIE (drukowanie jak -i). Tylko kości dla a
drukowane są jednostki kompilacji pasujące do podanej nazwy. Jeśli jednostka kompilacji
to ./a/b/cc „cuname”, które podajesz, powinno być cc jako znaki przez
końcowe oddzielające ścieżki / są ignorowane. Jeśli „cuname” zaczyna się od /, to całość
ciąg nazwy jednostki kompilacji musi pasować do „cuname”. „Cuname” jest czytane jako
Ciąg URI.
-U Całkowicie wyłącz interpretację URI ciągów wiersza poleceń. Musi być
w wierszu polecenia przed napotkanymi ciągami URI, aby były w pełni skuteczne.
-z Nie jest już obsługiwany.
Używaj dwarfdump online za pomocą usług onworks.net