siemka wszystkim, mam takie pytanie odnosnie debuggera w środowisku Visual 2008 C++ express. mianowicie, C++ sie bawie już od dłuższego czasu, a o debuggerze, wiem tylko tyle, że zgodnie z wikipedią - odnajduje błędy w kodzie źródłowym. mam odnośnie jego kilka pytań:
napisałem specjalnie błędny kod i zaznaczyłem opcję w visualu Start Without debugging - na dole ekranu i tak pojawiły mi się błędy, które celowo umieściłem. Jak to możliwe, że bez debuggera wyświetliło mi błędy - przeciez to on je szuka, a ja go teraz wyłączyłem :?:
do czego może się przydać debugger początkującemu programiście (oprócz wyswietlania błedów) :?: wiem, że można zastawiać tam np. breakpointy itp., ale jakoś jeszcze nigdy tego nie używałem. znacie jakiś dobry przykład (i w miarę prosty), na którym można by wykorzystac mozliwości tego odpluskiwacza :?:
czytam o C++ w Symfonii, i tam autor wspomina ciągle, że dzięki debuggerowi można śledzić pracę programu linijka za linijką. czy ktoś wie jak to można osiągnąć w IDE Microsoftu :?:
Możesz podłączyć się pod proces, spauzować wykonywanie programu, postawić breakpoint w oknie IDE, przerwać działanie programowo(przerwanie nr 3, DebugBreak, System.Diagnostics.Debug.Break) i przypuszczam, że to nie jedyne sposoby.
Odnośnie twojego pierwszego postu, to uruchomiłem ten program potem bez debuggera i też wyświetlił mi się błąd (run-time coś tam…), tyle, że w nieco innym okienku - ale treść była taka sama jak przy uruchomieniu z debuggerem.
Odnośnie punktu 2) to chciałbym - jak już mówiłem - zobaczyc jakiś przykład programu - o ile się da ^.^
OK, ale jak skompiluję program bez debuggera, w którym będzie odniesienie się do nieistniejącego el. tablicy, to i tak wyświetli się błąd - a debugger nie pracował
Mam tylko odnoszenie się do nieistniejacego elementu tablicy. Pomimo , że włącze opcje Start without debugging i tak wyświetli się w okienku dialogowym info o tym zdarzeniu. A debugger nie startował :!: O to mi cały czas chodzi.
Odwołanie do nieistniejącego elementu tablicy to Access Violation, więc nie dziw się, że system wywala Ci program. Bez włączonego debuggera(albo bez podłączenia go w trakcie błędu) nie wskaże Ci linii w której błąd wystąpił, Call Stacka i innych przydatnych informacji.
Aha, czyli bez debuggera też wyświetli się komunikat o błędzie, tyle, że z włączonym debuggerem dostaniemy więcej infa na ten temat :?: Do tego on głównie jest (+ do pracy krokowej itp.) :?:
int[] tablica;
...
n = pobierzDlugoscTablicy();
tablica = new int[n];
...
i = generujIndeksNaPodstawieParametrow(a, b);
tablica[i] = 0;
Więc jeśli będziesz chciał sprawdzić długość tablicy, to ustawiasz breakpointa przy definicji tablicy. Jeśli zaś pojawia Ci się wyjątek o przekroczeniu zakresu tejże tablicy, to ustawiasz breakpointa przy tablica_. W “Watch list” dodajesz zmienną i oraz n, zatem od razu widzisz, że coś jest nie tak, że winna może być funkcja generujIndeks. Oczywiście możesz sprawdzić także parametry a i b :)_
Generalnie służy do podglądu zmiennych oraz kontrolowania tego co się dzieje w programie.