Windbg中常用的几个基本命令
1. Symbol 文件设置:
SRV*F:/MicrosoftSymbols*http://msdl.microsoft.com/download/symbols;F:/TestApplicationSymbol
2. !Analyze -v
直接分析当前的dump,能够自动找出第一现场的异常
3. ~0s
切换分析的线程
4. kb, kp, k
查看当前线程的Call Stack
5. ~* kb
查看所有线程的Call Stack
6. X msvcrt!printf
查找printf函数的入口地址
7. dds ebp
打印Call Stack上的二进制值
8. bl, bc, bp, ba(break on access), sx (set exception)
打印、清除、设置断点
9. dt
格式化显示
10. .dump /ma f:/dumpfile.dump
保存dump文件
托管代码常见命令:
11. .loadby sos mscorwks
加载托管代码分析命令
12. !clrstack, !dumpstack
查看当前线程的托管堆栈
13. ~* e !clrstack
查看所有线程的托管堆栈
14. !dso (!dumpstackobject)
查看当前堆栈的对象
15. !do (dumpobject)
查看某个托管对象
16. !PrintException
查看异常对象
17. 设置托管代码断点
0:006> !name2ee Snoop.exe Snoop.AppChooser
Module: 00382c5c (Snoop.exe)
Token: 0x02000024
MethodTable: 00386d98
EEClass: 00411b64
Name: Snoop.AppChooser
0:006> !dumpmt -md 00386d98
EEClass: 00411b64
Module: 00382c5c
Name: Snoop.AppChooser
mdToken: 02000024 (F:/SnoopSource/Snoop/Build/Release/Snoop.exe)
BaseSize: 0x1cc
ComponentSize: 0x0
Number of IFaces in IFaceMap: 9
Slots in VTable: 356
--------------------------------------
MethodDesc Table
Entry MethodDesc JIT Name
5777c028 5763ddd4 PreJIT System.Windows.Controls.Control.ToString()
... ...
012e06b0 00386cc0 JIT Snoop.AppChooser.Refresh()
0:006> !bpmd -md 00386cc0
MethodDesc = 00386cc0
Setting breakpoint: bp 012E06B0 [Snoop.AppChooser.Refresh()]