WinDbgが必要。
OSのメニューのWindows Kitsの中にあるWinDbgを起動。対象のプロセスに合わせてx86かx64を選ぶ。C#アプリでAnyCPUの場合はOSに合わせる。
対象プロセスを起動してから、F6を押してプロセスにアタッチする。
WinDbgでシンボルを読み込むために以下を実行
1 |
*srv*c:\symbols*http://msdl.microsoft.com/downloads/symbols* |
対象プロセスの.NETバージョンとCPUに合わせて以下のどれかを実行。SOSはWinDbgの拡張で、.NETアプリ用の追加のコマンドが利用できるようになる。参照
1 2 3 |
.load C:\Windows\Microsoft.NET\Framework\v2.0.50727\SOS.dll .load C:\Windows\Microsoft.NET\Framework\v4.0.30319\SOS.dll .load C:\Windows\Microsoft.NET\Framework64\v4.0.30319\SOS.dll |
調べたいオブジェクト型の名前で以下を実行。
1 2 3 4 5 |
!dumpheap -type EPBrowser !dumpheap -type EPDropForm !dumpheap -type DicWebBrowser !dumpheap -mt !gcroot |
リークを検出したいときは、オブジェクトがなくなる動作をしてからGCをして上の動作を行う。