GDB - symbole debugowania

ZA Debugging Symbol Tableodwzorowuje instrukcje w skompilowanym programie binarnym na odpowiadające im zmienne, funkcje lub wiersze w kodzie źródłowym. To mapowanie może wyglądać następująco:

  • Instrukcja programu ⇒ nazwa pozycji, typ pozycji, oryginalny plik, zdefiniowany numer linii.

Tabele symboli mogą być osadzone w programie lub przechowywane jako osobny plik. Jeśli więc planujesz debugować swój program, konieczne jest utworzenie tabeli symboli, która będzie zawierała informacje wymagane do debugowania programu.

Możemy wnioskować o następujących faktach dotyczących tablic symboli:

  • Tablica symboli działa dla określonej wersji programu - jeśli program się zmieni, należy utworzyć nową tablicę.

  • Kompilacje debugowania są często większe i wolniejsze niż wersje detaliczne (bez debugowania); Kompilacje debugowania zawierają tablicę symboli i inne informacje pomocnicze.

  • Jeśli chcesz debugować program binarny, którego sam nie skompilowałeś, musisz uzyskać tablice symboli od autora.

Aby umożliwić GDB odczytanie wszystkich tych informacji wiersz po wierszu z tablicy symboli, musimy skompilować je nieco inaczej. Zwykle kompilujemy nasze programy jako:

gcc hello.cc -o hello

Zamiast robić to, musimy skompilować się z flagą -g, jak pokazano poniżej:

gcc -g hello.cc -o hello