„OBJDUMP to narzędzie wiersza poleceń używana do wyświetlania informacji o obiekcie w systemach podobnych do UNIX. Polecenie, gdy jest używane, otrzymuje informacje o pliku obiektu, nawet jeśli nie masz kodu źródłowego. Dlatego może to być narzędzie do debugowania plików obiektowych, szczególnie podczas pracy z programami kompilatora."
Ten przewodnik obejmuje różne zastosowania polecenia OBJDUMP z przykładami. Sprawdź to.
Użycie polecenia objdump
Objdump ma 6 głównych celów:
Jego podstawowa składnia to:
$ objdump
Istnieje wiele opcji do użycia z poleceniem objdump i możesz wyświetlić stronę pomocy, aby je wyświetlić.
$ objdump - -help
W tym artykule użyje /bin /echo jako nasz plik obiektu dla naszych przykładów. Możesz jednak użyć innych plików obiektów, takich jak programy C. Użycie jest nadal takie samo.
Praca z Objdumpem
Wyświetl nagłówki pliku obiektowego
Opcja -f, gdy jest używana z poleceniem OBJDUMP, pobiera wszystkie nagłówki plików powiązane z danym plikiem obiektu, jak pokazano poniżej. Pamiętaj, że używamy /bin /echo, który jest binarnym plikiem wykonywalnym dla polecenia echo jako naszego obiektu w tym przypadku.
$ objdump -f /bin /echo
Wynikowe wyjście wyświetlające nagłówki plików będzie:
Możesz zwrócić uwagę na format i nagłówki pliku obiektu z wyjścia.
Aby uzyskać nagłówki plików specyficzne dla obiektu
Jeśli chcesz wyświetlić określone nagłówki plików dla używanego pliku obiektu, użyj opcji -p.
$ objdump -p /bin /echo
Wyświetl zawartość nagłówka sekcji
Każdy plik ma inne nagłówki sekcji. Jeśli chcesz wyświetlić zawartość każdego z nagłówków sekcji, użyj opcji -H.
$ objdump -h /bin /echo
W takim przypadku wyjście brzmiało:
Ze wyjścia można zauważyć, że różne nagłówki sekcji są ponumerowane od 1, a każdy nagłówek sekcji ma swój rozmiar, VMA, LMA, Plik i ALGN.
Rozmiar: reprezentuje rozmiar załadowanej sekcji.
VMA: reprezentuje adres pamięci wirtualnej
Lma: reprezentuje adres pamięci logicznej
Spiłować: reprezentuje przesunięcie sekcji od początku pliku.
Algn: reprezentuje wyrównanie sekcji.
Inne szczegóły, takie jak alloc, dane, odczyt i treść, to różne flagi reprezentujące, jeśli sekcja jest czytnie lub jest załadowana.
Wyświetl informacje o wszystkich nagłówkach
Możesz także uzyskać wszystkie informacje o nagłówkach w pliku obiektu. Aby to zrobić, użyj opcji -x.
$ objdump -x /bin /echo
W tym przykładzie częściowe wyjście dla powyższego polecenia będzie:
Aby uzyskać zawartość asemblera sekcji wykonywalnej
Aby uzyskać zawartość asemblera sekcji wykonywalnej, użyj opcji -D.
$ objdump -d /bin /echo
W tym przykładzie częściowe wyjście to:
Wyjście jest podzielone na sekcje wykonywalne, a dla każdego z nich jest wyświetlana zawartość asemblera. Na przykład możesz zobaczyć sekcję „.init ”i jego odpowiednia zawartość asemblera poniżej przed przejściem do następnej sekcji wykonywalnej pliku obiektu.
Uzyskaj zawartość asemblera każdej sekcji
-D wyświetla zawartość asemblera tylko wykonywalnych sekcji. Jednak użyj opcji D, jeśli potrzebujesz zawartości dla wszystkich sekcji plików.
$ objdump -d /bin /echo
Aby uzyskać całą zawartość wszystkich sekcji
W tym celu użyj opcji -s
$ objdump -s /bin /echo
Wyjście dla wszystkich sekcji i ich zawartości będzie:
Wyświetl informacje o debugowaniu
Opcja -G wyświetla wszystkie dostępne informacje o debugowaniu pliku obiektu.
$ objdump -g /bin /echo
Wyświetl zawartość tabeli symboli
Jeśli plik obiektu ma tabelę symboli, możesz wyświetlić jego zawartość za pomocą opcji -T
$ objdump -t /bin /echo
Wniosek
Polecenie OBJDUMP jest przydatnym narzędziem dla programistów, którzy mają do czynienia z kompilatorami. Polecenie ma wiele zastosowań i omówiliśmy najczęstsze użycie przykładu. Możesz także sprawdzić jego stronę Man, aby uzyskać więcej informacji na temat tego, jak korzystać z narzędzia. Ponadto polecenie może stać się nieco przytłaczające. Więc ćwicz to bardziej. Wszystkiego najlepszego!