Tytuł tego posta może być lekkim zeskoczeniem. Od premiery VS 2010 sporo czasu już minęło. Postanowiłem jednak spisać kilka nowości jakie udostępnia ono pod kątem debugowania. Zadanie jest o tyle trudne, że prawie wszystko co było do powiedzenia w tym temacie zostało już powiedziane przez pracowników MS w postach takich jak ten napisany przez ScottaGu. Postaram się jednak przedstawić temat z nowej perspektywy.

Dump

minidump
VS w najnowszej wersji umożliwia nam stworzenie dumpa procesu bezpośrednio z poziomu środowiska. Przydatne…

Dump summary

Skoro już jesteśmy przy samym dumpie to VS podaje nam ładne podsumowanie dumpa, którego właśnie zrzuciliśmy. Wystarczy wczytać go do VS aby pokazał nam całkiem ładne podsumowanie tego co w nim mamy.
minidump_summary

FirstChanceException

Czy czasem zastanawiasz się co oznaczają “tajemnicze” komunikaty wyświetlane w okienku Output o treści “A first chance exception of type ‘System.ApplicationException’ occurred in XXX.exe”? Nie będziemy się tu rozpisywać co on oznacza, bo można to przeczytać w poście What is a First Chance Exception? Natomiast to o czym napiszemy to to, że w obecnej wersji VS pozwala nam podpiąć się pod zdarzenie, gdy taki wyjątek jest generowany. Możemy to zrobić za pomocą następującego kawałka kodu:

AppDomain.CurrentDomain.FirstChanceException += CurrentDomain_FirstChanceException;

Dzięki temu dostaniemy powiadomienia o takich zdarzeniach i możemy na nie reagować.

Dodatkowe Opcje

W sekcji Debugging w opcjach mamy dodatkową pozycję Output Window. Umożliwia ono nam skonfigurowanie kilku dodatkowych opcji ułatwiających znajdywanie błędów szczególnie przydatna jest część odnośnie WPF’a.
options
Możemy powiedzieć jakie informacje o WPF chcemy widzieć w okienku Output. Mamy także możliwość wyłączenia różnych opcji, aby był on bardziej czytelny. Nadal jednak błędny Bindingi nie powodują błędów kompilacji.

Okienko rejestrów

VS posiada (także w poprzednich wersjach) podgląd rejestrów procesora (Debug –> Windows –> Registers, CTRL+ALT+G). To co dołożyli w najnowszej wersji to podgląd wartości dla rejestrów AVX oraz AVX Float. Co to jest? Czytaj tutaj – Advanced Vector Extensions.

Podsumowując

Mam nadzieję, że te kilka “tricków” przyda się wszystkim, którzy od czasu do czasu muszą pobawić się z debuggerem na poziomie wyższym niż ustawienie kilku pułapek. Na pewno nie opisałem wszystkich nowości w tym temacie, np. IntelliTrace. Sporo już o tym napisano i nie ma sensu tego powielać. Za początek niech służą te 4 artykuły na dotnetomaniak.plIntelliTraceZachęcam jeszcze do przejrzenia rzeczy w poście Scott’a Gu. Jest tam także sporo fajnych drobnych usprawnień, które spowodują, że nasz związek z debuggerem będzie przyjemniejszy :).