poniedziałek, czerwiec 27, 2011

SOS w VisualStudio

Kolejny wpis z kategorii ‘nieznanych’. Dziś będzie o okienku Immediate Window. Wszyscy wiemy (?), że można w nim wykonywać wszelkie polecenia, jakie można by napisać w kodzie czyli np. var builder = new System.Text.StringBuilder() i będziemy mogli na tej zmiennej działać.

Ale za pomocą tego okna można napisać także .load sos (było to także możliwe w VS 2008). Co to nam da?
W większości przypadków wyświetli nam komunikat taki jak poniżej.

enable_unmanaged

Aby załadować SOS musimy włączyć unmanaged debugging w ustawieniach projektu.

managed-debugging

A to już da nam więcej. Będziemy mieli dostęp do wszystkich poleceń SOS!
Wtedy będziemy mogli wyświetlić stertę naszej aplikacji. Wystarczy wykonać polecenie !dumpheap –stat i gotowe. Czyli tak naprawdę wyświetlić informacje o wszystkich obiektach w naszym programie.

dumpheap_thumb7

Potem już z górki. Możemy wyświetlić informacje o konkretnej klasie, czyli !dumpheap –mt <adres>.

dumpheap2

Schodząc jeszcze niżej konkretnego obiektu: !do 02a0cbbc.

do

Lista poleceń nie ogranicza się tylko do tych wymienionych wyżej i daje dostęp do wszystkich poleceń modułu. Możemy analizować obiekty, kod i stos, struktury runtime’u oraz kilkanaście poleceń diagnostycznych. Pełna lista na zrzucie poniżej lub pod tym linkiem na MSDN.

help

Nice. Miłego SOS’owania.

0 komentarze: