.NET应用程序调试—原理、工具、方法(8)
0:000> .load C:\Windows\Microsoft.NET\Framework\v4.0.30319\SOS.dll
0:000> .loadby sos.dll clrjit
使用.loadby 命令很容易的就可以加载SOS扩展,而不需要自己去判断当前程序是.NET什么版本的。
5.3.调试的三种命令类型(标准命令、元命令、扩展命令)
在使用调试器调试程序时,所要使用的命令主要分为三类。
第一类是标准命令,就是不带任何符号开始的命令,比如:pb、lmvm。这一类命令是所有Windows调试工具箱中的调试工具通用的,不管你是使用ntsd还是winDbg都可以。
第二类命令是元命令,就是使用"."号开始的命令,这一类命令并不是在所有调试工具中通用的。第三类是扩展命令,扩展命令就是各个调试器扩展出来的命令,也就是以"!"开始的命令,如:!dumpheap -stat,!dumpstatcobjects。
6.调试扩展的几个比较常用的命令(SOS.DLL、SOSEX.DLL)
当然这个纯粹是我的个人感觉,排名不分先后。
!dumpheap -stat (查看托管堆统计信息)
0:000> !dumpheap -stat
Statistics:
MT Count
TotalSize Class Name
65366e78 1 12
System.Collections.Generic.EnumEqualityComparer`1[[System.Web.Compilation.FolderLevelBuildProviderAppliesTo,
System.Web]]
653667cc 1 12
System.Collections.Generic.ObjectEqualityComparer`1[[System.Web.WebSockets.IAsyncAbortableWebSocket,
System.Web]]
65365f08 1 12
System.Lazy`1+Boxed[[System.Web.Security.Cryptography.AspNetCryptoServiceProvider,
System.Web]]
65365a34 1 12
System.Web.Security.Cryptography.HomogenizingCryptoServiceWrapper
65361e20
1 12 System.Web.Configuration.CustomErrorsMode
!dumpheap -type (查看某个类型在堆中的信息)
0:000> !dumpheap -type System.String
Address MT
Size
10731228 624aacc0 14
107312c4 624aacc0 22
107312dc 624aacc0 78
10731370 624aacc0 28
相关新闻>>
- 发表评论
-
- 最新评论 更多>>