HAVIT Knowledge Base

Vývoj webových aplikací, .NET, SQL, návrh
Welcome to HAVIT Knowledge Base Sign in | Join | Help
-
Home Články Forums Obrázky Soubory

Vývojářské nástroje

Visual Studio, WDE, utility, tools

WinDbg a SOS.dll - analýza obsahu .NET heapu z memory dumpu

Nemám teď prostor se široce rozepisovat, takže spíš jenom rychlé poznámky z mého postupu analýzy obsahu .NET heapu z memory dumpu.

Memory dump vytvoříme např. z Task Manageru, pravým tlačítkem na proces a "Create Dump File". Získaný soubor .dmp si přeneseme na vývojářskou mašinu, kde máme nainstalováno WinDbg (a .NET Framework, jehož součástí je SOS.dll extenze pro WinDbg).

Po otevření dumpu ve WinDbg (File / Open Crash Dump...) používáme následující příkazy:

Zavedení SOS.dll extenzí:

.loadby sos.dll mscorwks

Základní statistika heapu, zejména výpis jednotlivých datových typů a objem paměti, kterou zabírají.

!dumpheap -stat

Výpis objektů z dané MethodTable (objekty daného typu), adresu získáme ze sloupce MT z předchozího příkazu (první sloupec):

!dumpheap -mt <MethodTableAddress>

Dump objektu (výpis jeho hodnot, atp.), adresu získáme z předchozího příkazu (první sloupec):

!do <ObjectAddress>

Vypsání všech referencí na objekt (od rootových), tj. proč nám objekt visí v paměti na není čištěn GC:

!gcroot <ObjectAddress>

Velikost objektu včetně všech jeho podstromu (toho, co referencuje):

!objsize <ObjectAddress>

Help pro určitý příkaz SOS.dll

!help <příkaz>

 

Odkazy, které se mohou hodit:

http://blogs.msdn.com/b/cclayton/archive/2010/06/22/basic-analysis-of-a-managed-memory-dump-net.aspx

http://www.codeproject.com/KB/dotnet/Memory_Leak_Detection.aspx

http://blogs.msdn.com/b/tess/

http://msdn.microsoft.com/en-us/library/bb190764.aspx

Published 9. července 2010 13:40 by Robert Haken
Filed under:

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Comments

No Comments

What do you think?

(required) 
(optional)
(required) 
Enter the code you see below

Submit