O symbolach debugowania

Domyślnie większość programów i bibliotek kompiluje się z włączonymi symbolami debugowania (z opcją gcc -g).

Podczas debugowania programu lub biblioteki skompilowanej z włączoną informacją o debugowaniu, debuger może podać nie tylko adresy w pamięci, ale też nazwy procedur i zmiennych.

Ale dołączanie tych symboli debugowania znacząco powiększa program lub bibliotekę. Oto zestawienie, które daje ogólne pojęcie o rozmiarach, jakie te symbole zajmują:

Wielkości mogą zmieniać się nieco, zależnie od użytego kompilatora i biblioteki języka C. Porównując rozmiary programów z i bez symboli debugowania, dostaniemy iloraz (lub krotność) rzędu od 2 do 5.

Usuwając te symbole można zaoszczędzić dużo miejsca, ponieważ większosć ludzi nigdy nie używa w swoim systemie debugera .

Aby usunąć symbole debugowania z binarium (które musi być binarium a.out lub ELF), wykonaj strip --strip-debug filename, gdzie "filename" to nazwa pliku. Można używać znaków globalnych do przetwarzania grupy plików (wykonaj coś w rodzaju strip --strip-debug $LFS/tools/bin/*).

Dla twojej wygody jest w Rozdziale 9 jedna prosta komenda, do wyrugowania wszystkich symboli debugowania ze wszystkich programów i bibliotek w twoim systemie. Dodatkowe inforamcje o optymalizacji znajdziesz we wskazówkach w http://www.linuxfromscratch.org/hints/downloads/files/optimization.txt.