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

本文详细介绍如何使用SOS(Son of Strike)扩展调试器来显示CLR数据结构内容,包括在Visual Studio中设置调试环境、加载SOS.dll及常用调试命令等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【转】http://www.cnblogs.com/happyhippy/archive/2007/04/11/710930.html

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>" 可以获得该命令的详细信息.

! help
-------------------------------------------------------------------------------
SOS 
is  a debugger extension DLL designed to aid  in  the debugging of managed
programs. Functions are listed by category, then roughly 
in  order of
importance. Shortcut names 
for  popular functions are listed  in  parenthesis.
Type 
" !help <functionname> "   for  detailed info on that function. 

Object Inspection                  Examining code and stacks
-----------------------------        -----------------------------
DumpObj (
do )                       Threads
DumpArray (da)                     CLRStack
DumpStackObjects (dso)             IP2MD
DumpHeap                           U
DumpVC                             DumpStack
GCRoot                             EEStack
ObjSize                            GCInfo
FinalizeQueue                      EHInfo
PrintException (pe)                COMState
TraverseHeap                       BPMD 

Examining CLR data structures      Diagnostic Utilities
-----------------------------        -----------------------------
DumpDomain                         VerifyHeap
EEHeap                             DumpLog
Name2EE                            FindAppDomain
SyncBlk                            SaveModule
DumpMT                             GCHandles
DumpClass                          GCHandleLeaks
DumpMD                             VMMap
Token2EE                           VMStat
EEVersion                          ProcInfo 
DumpModule                         StopOnException (soe)
ThreadPool                         MinidumpMode DumpAssembly                       
DumpMethodSig                      
DumpRuntimeTypes                   Other
DumpSig                            
-----------------------------
RCWCleanupList                     FAQ
DumpIL


    安装VS2003时,也会安装SOS的帮助文档,位于目录Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Tool Developers Guide\Samples\sos下;但VS2005中貌似没有安装该帮助文档,这里有更详细的文档http://msdn2.microsoft.com/en-us/library/ms954594.aspx...。我将这两份文档放在我的cnblogs上,可以从这里(http://files.cnblogs.com/happyhippy/sos.rar)下载。

转载于:https://www.cnblogs.com/futao/archive/2009/12/23/1630525.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值