天天看点

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

   SOS(Son of Strike)扩展调试器可以用来显示CLR数据结构的内容。SOS是作为.net framework的一部分安装的(SOS.dll),位于%windir%\Microsoft.NET\Framework\v*.*.****(版本号)\目录下。在使用SOS(加载SOS.dll)进行调试的步骤:

Step1 在Visual Studio中设置项目属性,以启动托管调试:Visual Studio打开要调试的项目,菜单->项目(Project)->Project属性->调试->启用非托管代码调试,如下图所示:

Step2 在代码中设置断点->F5启动调试,运行到断点处;

Step3 设置Symbol目录:

    如果不设置Symbol目录,运行下面的命令时会提示“PDB symbol for mscorwks.dll not loaded”,这里我们只需要再设置下Symbol目录就行了:菜单->工具->选项->调试->符号,设置如下:

Step4 菜单->调试(Debug)->窗口(Windows)->即时(Immediate),在打开的“即时窗口”中输入“!load sos.dll”来加载SOS.dll,如果加载成功,则会提示“已加载扩展%windir%\Microsoft.NET\Framework\v*.*.****(版本号)\sos.dll”;

Step5 在“即时窗口”中输入“!help”可以获得调试命令列表(如下),输入"!help <command>" 可以获得该命令的详细信息.

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

!help

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

-------------------------------------------------------------------------------

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

SOS is a debugger extension DLL designed to aid in the debugging of managed

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

programs. Functions are listed by category, then roughly in order of

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

importance. Shortcut names for popular functions are listed in parenthesis.

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

Type "!help <functionname>" for detailed info on that function. 

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试
使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

Object Inspection                  Examining code and stacks

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

-----------------------------      -----------------------------

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

DumpObj (do)                       Threads

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

DumpArray (da)                     CLRStack

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

DumpStackObjects (dso)             IP2MD

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

DumpHeap                           U

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

DumpVC                             DumpStack

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

GCRoot                             EEStack

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

ObjSize                            GCInfo

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

FinalizeQueue                      EHInfo

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

PrintException (pe)                COMState

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

TraverseHeap                       BPMD 

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试
使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

Examining CLR data structures      Diagnostic Utilities

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试
使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

DumpDomain                         VerifyHeap

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

EEHeap                             DumpLog

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

Name2EE                            FindAppDomain

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

SyncBlk                            SaveModule

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

DumpMT                             GCHandles

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

DumpClass                          GCHandleLeaks

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

DumpMD                             VMMap

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

Token2EE                           VMStat

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

EEVersion                          ProcInfo 

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

DumpModule                         StopOnException (soe)

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

ThreadPool                         MinidumpMode DumpAssembly                       

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

DumpMethodSig                      

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

DumpRuntimeTypes                   Other

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

DumpSig                            -----------------------------

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

RCWCleanupList                     FAQ

使用SOS - 在Visual Studio中启用非托管代码调试来支持本机代码调试

DumpIL

本文转自Silent Void博客园博客,原文链接:http://www.cnblogs.com/happyhippy/archive/2007/04/11/710930.html,如需转载请自行联系原作者