addr2line - konwertuj adresy lub symbol + przesunięcie na nazwy plików i numery linii
addr2line [-a|--addresses] [-b bfdname|--target=bfdname] [-C|--demangle[=style]] [-r|--no-recurse-limit] [-R|--recurse-limit] [-e filename|--exe=filename] [-f|--functions] [-s|--basename] [-i|--inlines] [-p|--pretty-print] [-j|--section=name] [-H|--help] [-V|--version] [addr addr ...]
addr2line tłumaczy adresy lub symbol + przesunięcie na nazwy plików i numery linii. Biorąc pod uwagę adres lub symbol + przesunięcie w pliku wykonywalnym lub przesunięcie w sekcji obiektu relokowalnego, wykorzystuje informacje debugowania, aby dowiedzieć się, która nazwa pliku i numer linii są z nim powiązane.
Używany obiekt wykonywalny lub relokowalny jest określany za pomocą opcji -e. Domyślnie jest to plik a.out. Sekcja obiektu relokowalnego, która ma zostać użyta, jest określana za pomocą opcji -j.
addr2line ma dwa tryby działania.
W pierwszym, adresy szesnastkowe lub symbol + przesunięcie są określone w wierszu poleceń, a addr2line wyświetla nazwę pliku i numer wiersza dla każdego adresu.
W drugim addr2line odczytuje adresy szesnastkowe lub symbol + przesunięcie ze standardowego wejścia i wypisuje nazwę pliku i numer wiersza dla każdego adresu na standardowe wyjście. W tym trybie można użyć addr2line w potoku do konwersji dynamicznie wybieranych adresów.
Format danych wyjściowych to FILENAME:LINENO. Domyślnie każdy adres wejściowy generuje jedną linię wyjścia.
Dwie opcje mogą generować dodatkowe linie przed każdą linią FILENAME:LINENO (w tej kolejności).
W przypadku użycia opcji -a zostanie wyświetlona linia z adresem wejściowym.
Jeśli używana jest opcja -f, wyświetlany jest wiersz z NAZWA FUNKCJI. Jest to nazwa funkcji zawierającej adres.
Jedna opcja może wygenerować dodatkowe wiersze po wierszu FILENAME:LINENO.
Jeśli użyta zostanie opcja -i i kod pod podanym adresem jest tam obecny z powodu wstawiania przez kompilator to po tym wyświetlą się dodatkowe linie. Jedna lub dwie dodatkowe linie (jeśli użyto opcji -f) są wyświetlane dla każdej funkcji wstawionej.
Alternatywnie, jeśli używana jest opcja -p, to każdy adres wejściowy generuje pojedynczą, długą linię wyjściową zawierającą adres, nazwę funkcji, nazwę pliku i numer linii. Jeśli użyto również opcji -i, wszystkie funkcje wstawione będą wyświetlane w ten sam sposób, ale w osobnych wierszach i poprzedzone tekstem (wstawiony przez).
Jeśli nie można określić nazwy pliku lub funkcji, addr2line wypisze w ich miejsce dwa znaki zapytania. Jeśli nie można określić numeru linii, addr2line wypisze 0.
Gdy używany jest symbol + przesunięcie, +przesunięcie jest opcjonalne, z wyjątkiem sytuacji, gdy symbol jest niejednoznaczny z liczbą szesnastkową. Rozpoznane symbole mogą być zniekształcone lub niezniekształcone, z wyjątkiem niezniekształconych symboli z + nie są dozwolone.
Długie i krótkie formy opcji, pokazane tutaj jako alternatywy, są równoważne.
Wyświetl adres przed nazwą funkcji, informacją o pliku i numerze wiersza. Adres jest drukowany z prefiksem 0x, aby łatwo go zidentyfikować.
Określ, że format kodu obiektowego dla plików obiektowych to bfdname.
Dekoduj (demangle) nazwy symboli niskiego poziomu na nazwy na poziomie użytkownika. Oprócz usunięcia wszelkich początkowych znaków podkreślenia poprzedzonych przez system, sprawia to, że nazwy funkcji C++ są czytelne. Różne kompilatory mają różne style zniekształcania. Opcjonalny argument stylu demanglingu może być użyty do wybrania odpowiedniego stylu demanglingu dla twojego kompilatora.
Określ nazwę pliku wykonywalnego, dla którego adresy mają zostać przetłumaczone. Domyślny plik to a.out.
Wyświetl nazwy funkcji oraz informacje o numerach plików i wierszy.
Wyświetlaj tylko podstawę każdej nazwy pliku.
Jeśli adres należy do funkcji, która została wstawiona, zostaną również wydrukowane informacje o źródle dla wszystkich obejmujących zakresów z powrotem do pierwszej niewstawionej funkcji. Na przykład, jeśli main wstawia callee1, który wstawia callee2, a adres pochodzi z callee2, informacje źródłowe dla callee1 i main również zostaną wydrukowane.
Czytaj przesunięcia względem określonej sekcji zamiast adresów bezwzględnych.
Spraw, aby wydruk był bardziej przyjazny dla człowieka: każda lokalizacja jest drukowana w jednym wierszu. Jeśli określono opcję -i, linie dla wszystkich obejmujących zakresów są poprzedzone prefiksem (wstawiony przez).
Włącza lub wyłącza ograniczenie ilości rekurencji wykonywanej podczas rozkładania łańcuchów. Ponieważ formaty zniekształcania nazw pozwalają na nieskończony poziom rekurencji, możliwe jest tworzenie łańcuchów, których dekodowanie spowoduje wyczerpanie ilości miejsca na stosie dostępnego na komputerze hosta, wywołując błąd pamięci. Limit próbuje temu zapobiec, ograniczając rekurencję do 2048 poziomów zagnieżdżenia. Domyślnie ten limit jest włączony, ale wyłączenie go może być konieczne w celu uporządkowania naprawdę skomplikowanych nazw. Należy jednak pamiętać, że jeśli limit rekurencji jest wyłączony, możliwe jest wyczerpanie stosu, a wszelkie zgłoszenia błędów dotyczące takiego zdarzenia zostaną odrzucone. Opcja -r jest synonimem opcji --no-recurse-limit. Opcja -R jest synonimem opcji --recurse-limit. Zauważ, że ta opcja jest skuteczna tylko wtedy, gdy została włączona opcja -C lub --demangle.
Odczytaj opcje wiersza poleceń z pliku. Odczytane opcje są wstawiane w miejsce oryginalnej opcji @plik. Jeśli plik nie istnieje lub nie można go odczytać, wówczas opcja zostanie potraktowana dosłownie, a nie usunięta. Opcje w pliku są oddzielone spacjami. Znak spacji może być zawarty w opcji poprzez ujęcie całej opcji w pojedynczy lub podwójny cudzysłów. Dowolny znak (w tym ukośnik odwrotny) może zostać uwzględniony poprzez poprzedzenie znaku, który ma zostać uwzględniony, ukośnikiem odwrotnym. Sam plik może zawierać dodatkowe opcje @pliku; wszelkie takie opcje będą przetwarzane rekurencyjnie.
Info entries for binutils.
Prawa autorskie (c) 1991-2023 Fundacja Wolnego Oprogramowania, Inc.
Udziela się pozwolenia na kopiowanie, rozpowszechnianie i/lub modyfikowanie tego dokumentu zgodnie z warunkami licencji GNU Free Documentation License, w wersji 1.3 lub dowolnej nowszej opublikowanej przez Free Software Foundation; bez Części Niezmiennych, bez Treści na Przedniej Okładce i bez Treści na Tylnej Okładce. Kopia licencji znajduje się w sekcji zatytułowanej Licencja GNU Wolnej Dokumentacji.