Oczywiście debugger debuggerowi nie równy i jego integracja z naszym IDE może być różne. Co powinien obsługiwać dobry denugger? Moim zdaniem będzie to:
- Callstack - niezwykle przydatne gdy program się wysypuje i chcemy zorientować się dokładnie w jakiej sytuacji.
- Podglądanie zawartości dowolnej zmiennej - najlepiej mocno zintegrowane z IDE aby można było najechać kursorem na zmienną w kodzie i sprawdzić jej obecną wartość.
- Możliwość odpalenaia programu krok po kroku - to jest standard i ma to chyba każdy debugger
- "Ładne" formatowanie dla kontenerów STL - chodzi o to aby z punktu widzenia debuggera patrzeć na taki kontener jak np. tablicę.
- Breakpointy normalne i warunkowe - tak jak normalne są w każdym IDE ze zintegrowanym debuggerem tak warunkowe (niezwykle przydatne) już nie
A teraz sytuacja z życia. Ostatnio pisałem program w QT Creatorze (dokładniej to program na zajęcia, pisałem w QT Creatorze bo miałem potem dodać to tego GUI) i napotkałem na dziwną sytuację. Myślę, że mogło to być spowodowane tym, że dane miałem na sztywno w programie ale do sytuacji. Mój program rzucał w pewnym momencie wyjątkiem i kończył działanie, standard można powiedzieć (wyjątek rzucany przez kontener STL). Oczywiście debugowałem program i okazało się, że... wyjątek rzucany jest jeszcze przed funkcją main, callstack pokazuje tylko elementy systemu operacyjnego, ogólnie coś jest nie tak bo poza main miałem tylko funkcje i tablice obiektów prostych. W końcu postanowiłem zobaczyć co mi powie Visual Studio i okazało się, że tam błąd jest w funkcji wywoływanej z main (który zresztą w ciągu chwili naprawiłem, bez debuggera bym go nie znalazł za szybko). I tak debugger uratował dzień. Co do samego debuggera w środowisku QT to nie jestem pewien co było przyczyną jego zachowania, podejrzewam, że kompilator zoptymalizował kod pomimo konfiguracji debug.
Tak na koniec o tym, że debugger jest niezwykle przydatny dowiedziałem się gdy przesiadłem się z Dev-C++ na Visual Studio. Umiejętność debugowania jest niezwykle ważna w programowaniu i osobiście zauważyłem to u osób które pisały w Dev-C++, że nie potrafią debugować przez co nie radzą sobie z błędami.
Brak komentarzy:
Prześlij komentarz