no >- i IłoyiOyrf ł/iofc74y/,'
j w-
iRel.0^70 (pcr^l l-Iftioiiy, o r<u^ -
°i ku ‘t Lm)
Rysunek 1: Strona dziennika komputera Harvard Mark II zawierająca martwego robaka i podpis “Relay #70 Panel F (moth) in relay. First actual case of bug being found” (Przekaźnik #70 Panel F (ćma) w przekaźniku. Pierwszy faktyczny przypadek znalezienia robaka) (źródło grafiki: Wikimedia Commons).
Z bardziej współczesnymi problemami, związanymi z błędami w kodzie, można sobie radzić np. poprzez wypisywanie w programie wartości zmiennych lub bieżących etapów programu na ekranie i śledzenie ich zmian. Wiąże się to z dopisywaniem do kodu dodatkowych, tymczasowych linijek, które zmniejszają jego czytelność, a na koniec muszą być usuwane. Dlatego powstała specjalna klasa programów - debuuggerów - służących do testowania i usuwania błędów z innych programów. Standardowym deguggerem kompilatora gcc jest gdb (GNU Debugger), który jest programem konsolowym. Typowa sesja z tym programem jest opisana poniżej na przykładzie programu nazwanego test (kod źródłowy programu w pliku test.cpp).
• Podczas kompilacji programu należy użyć dodatkowej flagi -ggdb, która spowoduje dodanie do programu dodatkowych informacji dla gdb
g++ -Wall -ggdb -o test test.cpp
• Program gdb można uruchomić na dwa sposoby, podając nazwę programu który chcemy analizować
$ gdb test
lub uruchamiając gdb i używając polecenia file $ gdb
(gdb) file test
w obu przypadkach analizowany program test powinien zostać załadowany.
20