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