Podłączanie debugera VS do procesu

2009-06-27 17:48

Kiedy piszemy aplikację będącą już w na tyle zaawansowanym stadium, że nie objawia ona błędów przy pierwszym lepszym uruchomieniu, to zdarza się, iż uruchamiamy ją bez wsparcia debugera (co można zrobić standardowym skrótem klawiszowym Ctrl+F5 w Visual Studio). Mimo tego zawsze może się jednak zdarzyć jakiś nieprzewidziany wyjątek, błąd czy inna nieprawidłowość. Ba, może się tak zdarzyć w programie, który już dawno uznaliśmy za skończony!
Co wtedy? Przecież warunki powstania błędu mogą być trudne i pracochłonne do odtworzenia, jeślibyśmy uruchomili program ponownie – już w trybie debugowania. Nierzadko zresztą po takiej próbie błąd nagle w “magiczny” sposób zniknie, bo okaże się, że albo coś przeoczyliśmy, albo dany bug zależy od jakichś nieznanych jeszcze okoliczności, albo że całkiem niedeterministyczny (heisenbug).

Dlatego też lepiej posłużyć się już tą instancją programu, w której problem wystąpił, i przy jej pomocy poszukać błędu. W tym celu można użyć przydatnej opcji Visual Studio, pozwalającej na przyłączenie debugera do działającego procesu i dostępnej poprzez menu Debug > Attach to Process. Tam możemy wybrać po prostu naszą aplikację z listy działających procesów.
Jakie możliwości nam to daje? To zależy od tego, czy w pliku wykonywalnym docelowej aplikacji znajdują się odpowiednie symbole debugowe . W najlepszym wypadku będziemy mogli śledzić kod programu tak samo, jak przy uruchamianiu go z asystą debugera od samego początku (o ile, rzecz jasna, wcześniej otworzymy projekt, z którego kompilowaliśmy nasz program). Jeśli zaś nie dysponujemy źródłem aplikacji lub docelowy plik .exe nie posiada żadnych symboli debugowych, to oczywiście nadal możemy wykonywać działania typowe dla każdego debugera – jak krokowe wykonywanie instrukcji maszynowych czy ustawianie breakpointów na konkretnych adresach w pamięci.

Tags: , ,
Author: Xion, posted under Applications, Programming »


8 comments for post “Podłączanie debugera VS do procesu”.
  1. Aithne:
    June 27th, 2009 o 20:48

    Jeśli znikły nam symbole dla debugera, to Visual się do niczego nie nadaje. Wtedy trzeba mieć porządny debuger assembly-level, a nie jakieś ścierwo.

  2. vashpan:
    June 27th, 2009 o 21:17

    Ja uruchamiam bez debugowania praktycznie zawsze, nawet najprostsza aplikacje… Doiero przy bledzie ponawiam to samo w trybie debug, choc rzeczywiscie tutaj jest racja “co jesli blad byl trudny do odtworzenia” Jednakze moja instalacja Visuala dorzuca do systemu opcje, ze przy kazdym wysypaniu sie programu ( dowolnego ) jest opcja uruchomienia debuggera z Visuala. Nie trzeba wiec nic podlaczac. I tak samo majac symbole, dostajemy wszystko to co w zwyklym trybie Debug…

  3. Netrix:
    June 28th, 2009 o 0:48

    Trzymajcie mnie…

    Visual Studio posiada naprawdę genialny debugger, wystarczy rzucić okiem na ten screen choćby http://screenup.pl/?l=RLWH9AP .

  4. Aithne:
    June 29th, 2009 o 21:34

    …Ale wtedy są symbole. Bez nich trzeba mieć coś, co sobie w takich sytuacjach daje radę.

  5. Reg:
    June 30th, 2009 o 22:32

    Coś kojarzę, że tą funkcję Attach to Process ma tylko Visual C++ w wersji Professional, a nie Express. Prawda to?

  6. lukaszw:
    June 30th, 2009 o 23:40

    Nie, w Express też jest.

  7. dario-g:
    July 12th, 2009 o 8:56

    A gdzie jest w Express? Nie mam C++, ale w VB i C# (WebDeveloper) nie widzę :)

  8. lukaszw:
    July 13th, 2009 o 23:58

    Sprawdziłem i w VC++2008EE jest, a w VC#2008EE nie ma :)

Comments are disabled.
 


© 2018 Karol Kuczmarski "Xion". Layout by Urszulka. Powered by WordPress with QuickLaTeX.com.