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 .
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.