WinDbg 调试命令记录一
WinDbg是微软开发的免费源码级调试工具。Windbg可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。
下载地址:http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx
----------------------------------
----------------------------------
缓存路径设置:
srv*c:\ABeenSymcache*http://msdl.microsoft.com/download/symbols;c:\ABeenSymcache; // "c:\ABeenSymcache" 为本机设置的存储路径
----------------------------------
非托管代码信息查看命令:
~ // 列出当前所有线程,当前线程左边有一点“.”
~ ns // 切换到线程n ,如:~ 2s切到线程2
kb // 查看线程被抓时刻的操作
~* kb :查看所有线程被抓时刻的操作
托管代码信息查看命令:
“.load clr20\sos.dll” // 载入.net sos.dll "clr20" 为sos.dll存放目录名(或.loadby sos mscorwks)
!clrstack // 查看当前线程 managed code 的信息
~* e!clrstack // 查看全部线程的managed code信息
!dso(Dump Stack Objects的缩写) // 显示当前栈上所有的变量
!do+变量地址(dump object的缩写) // 查看变量的信息(托管代码,最核心的命令是 ) ,-nofields 参数,对于string这些类型,能输出的信息少点。
DumpVC <Method Table> <Value object start addr>
Example: DumpVC 907b50 67903084 //查看值类型结构
!da+地址 // 查看数组信息
dd // 查看hashtable信息
-------------------------------------------------------------------------------
!bpmd ConsoleApp.exe ConsoleApp.Program.Tets //表示在些方法加断点
!dumpheap
// 查看托管堆上所有的信息,-stat参数按照托管资源的类型group
by,每个不同的类型的信息都列出来,TotalSize来排序的(但是这个size不准,注意)!dumpheap -stat和!dumpheap
-mt <methodtable>是很有用的,尤其在分析high cpu/ high memory的时候。
-min,这个命令的好处是,只列出比指定大小大的对象出来(如: !dumpheap -mt 790fd8c4 -min 8000)。
-type,可以指定我们要看的类型。如string,如hashtable等。