WinDbg常用调试命令
2014-09-11 10:29
381 查看
写在前面的话:
调试当然可以用WinDbg,楼主发现先用DebugDiagnosticTool来分析更棒。但是楼主发现1.2版的DebugDiag有Advanced
Analysis,但2.0版本又没有了,非常不解,看来只能用1.2版本。分析前先设置pdb路径,Tools-Options And Settings..,Folders And Search Paths属性页里设置,第一个就是分析时搜索的pdb路径。
如何用WinDbg调试就不说了,满大街就是。此文只记录些常用的命令,不断补充,以备不时之需。只记录简单用法或命令名,具体用法查WinDbg的Debugging Help。http://www.cnblogs.com/killmyday/tag/%E8%B0%83%E8%AF%95/这里面的三篇文章对于调试非托管代码还是很有用的。
.reload:删除所有符号信息并重新加载需要的符号,一般用法“.reoad
/f”,“.reload /i xxxx”当模块与pdb不相符时强制加载。
!analyze:自动分析出异常信息,一般用法“!analyze
-v”。
lm:列出加载的所有模块和每个模块的符号信息,一般用法“lm”或“lm
vm test.dll”显示所有模块或显示指定模块信息信息。
k*:显示堆栈,一般用法“kb”。
dt:显示局部、全局等变量的值,一般用法“dt
CString 0x06a6e344”,把0x06a6e344的地址解析为CString类型并显示出来。
!wow64exts.sw:32位托管程序在64位机器上运行,产生的也是64位dump时,就得调用这个命令切换到32位模式下来调试。
.load或.loadby:加载一个新的扩展dll到调试器里,一般用法“.loadby
sos clr”,调用C#程序常用命令。
!dso:把当前栈上所有的变量都显示出来,调试C#用,“.loadby
sos clr”配合这个命令可显示一些东东。
!clrstack:这个命令不错,调试C#用,可显示堆栈,使用!clrstack可以查看当前的条用堆栈,使用!clrstack
-l可以查看当前调用堆栈以及其上的局部变量和值,使用!clrstack -p可以查看当前调用堆栈上的参数变量以及值,使用!clrstack -a可以查看当前堆栈上所有局部变量和参数变量以及值(格式为StackAddress = StackValue)。!clrstack命令只会显示托管代码的调用堆栈,如果想查看完整的调用堆栈可以使用!dumpstack命令。
!EEStack:可打印出所有线程的堆栈信息,如果!clrstack无效(报“Failed
to start stack walk: 80070057”),可试着用此命令。注意在64位机器上取32程序的dump时,最好用32位取dump的程序,否则可能!clrstack无用。
x:显示指定模块中的符号,一般用法“x
test!*m_*”显示test模块中含m_的符号。
d*:显示给定内存的内容,一般用法“dc
0x06a6e344”显示0x06a6e344处的内容。
!address:显示内存信息,一般用法“!address0x06a6e344”显示0x06a6e344处内在的属性。
dpa或dpu:显示给定内存以ANSI或UNICODE格式编码的字符。
.cls:清屏。
.chain:显示加载的扩展dll。
!cs:显示一个或多个临界区信息,比如“!cs 0x21ba1980”显示0x21ba1980的临界区信息,!cs -l仅显示锁定的临界区。
.ecxr:命令定位当前异常的上下文信息,并显示指定记录中的重要寄存器。
调试当然可以用WinDbg,楼主发现先用DebugDiagnosticTool来分析更棒。但是楼主发现1.2版的DebugDiag有Advanced
Analysis,但2.0版本又没有了,非常不解,看来只能用1.2版本。分析前先设置pdb路径,Tools-Options And Settings..,Folders And Search Paths属性页里设置,第一个就是分析时搜索的pdb路径。
如何用WinDbg调试就不说了,满大街就是。此文只记录些常用的命令,不断补充,以备不时之需。只记录简单用法或命令名,具体用法查WinDbg的Debugging Help。http://www.cnblogs.com/killmyday/tag/%E8%B0%83%E8%AF%95/这里面的三篇文章对于调试非托管代码还是很有用的。
.reload:删除所有符号信息并重新加载需要的符号,一般用法“.reoad
/f”,“.reload /i xxxx”当模块与pdb不相符时强制加载。
!analyze:自动分析出异常信息,一般用法“!analyze
-v”。
lm:列出加载的所有模块和每个模块的符号信息,一般用法“lm”或“lm
vm test.dll”显示所有模块或显示指定模块信息信息。
k*:显示堆栈,一般用法“kb”。
dt:显示局部、全局等变量的值,一般用法“dt
CString 0x06a6e344”,把0x06a6e344的地址解析为CString类型并显示出来。
!wow64exts.sw:32位托管程序在64位机器上运行,产生的也是64位dump时,就得调用这个命令切换到32位模式下来调试。
.load或.loadby:加载一个新的扩展dll到调试器里,一般用法“.loadby
sos clr”,调用C#程序常用命令。
!dso:把当前栈上所有的变量都显示出来,调试C#用,“.loadby
sos clr”配合这个命令可显示一些东东。
!clrstack:这个命令不错,调试C#用,可显示堆栈,使用!clrstack可以查看当前的条用堆栈,使用!clrstack
-l可以查看当前调用堆栈以及其上的局部变量和值,使用!clrstack -p可以查看当前调用堆栈上的参数变量以及值,使用!clrstack -a可以查看当前堆栈上所有局部变量和参数变量以及值(格式为StackAddress = StackValue)。!clrstack命令只会显示托管代码的调用堆栈,如果想查看完整的调用堆栈可以使用!dumpstack命令。
!EEStack:可打印出所有线程的堆栈信息,如果!clrstack无效(报“Failed
to start stack walk: 80070057”),可试着用此命令。注意在64位机器上取32程序的dump时,最好用32位取dump的程序,否则可能!clrstack无用。
x:显示指定模块中的符号,一般用法“x
test!*m_*”显示test模块中含m_的符号。
d*:显示给定内存的内容,一般用法“dc
0x06a6e344”显示0x06a6e344处的内容。
!address:显示内存信息,一般用法“!address0x06a6e344”显示0x06a6e344处内在的属性。
dpa或dpu:显示给定内存以ANSI或UNICODE格式编码的字符。
.cls:清屏。
.chain:显示加载的扩展dll。
!cs:显示一个或多个临界区信息,比如“!cs 0x21ba1980”显示0x21ba1980的临界区信息,!cs -l仅显示锁定的临界区。
.ecxr:命令定位当前异常的上下文信息,并显示指定记录中的重要寄存器。
相关文章推荐
- Windbg内核调试之二: 常用命令
- windbg常用调试命令和控制命令
- Windows调试工具入门-5(WinDbg内核调试常用命令)
- Windbg 调试基本步骤与常用命令
- WinDbg学习笔记九 - 内核调试常用命令3 - 线程相关
- Windbg内核调试之二: 常用命令
- WinDbg学习笔记十一 - 内核调试常用命令5 - 对象相关
- Windbg内核调试之二: 常用命令
- WinDbg学习笔记七 - 内核调试常用命令1 - 查看目标机
- WinDbg 常用调试命令
- WinDBG常用调试命令
- WinDbg调试操作系统中中断系统时的常用命令
- WinDbg 内核调试常用命令
- WinDbg设置和常用调试命令
- WinDbg内核调试常用命令
- WinDbg学习笔记十 - 内核调试常用命令4 - 内存
- Windbg程序调试系列1-常用命令说明&示例
- gdb和windbg常用调试命令对照
- 整理一些平时调试.NET Application使用WinDbg + SOS的常用命令
- Windbg内核调试之二: 常用命令