我常用的windbg的命令
////////////////////////////////////////
2009-7-24
除了查看 函数调用堆栈的异常,我还能看到什么?
我能分析其中的汇编代码吗?
函数的参数值?
函数的返回值?
函数的返回地址异常?
等等
好的网站
http://www.debuginfo.com/index.html
collecting Crash dump on vista
http://blogs.msdn.com/iliast/comments/1264335.aspx
5:每当调用一个系统API的时候,显示当前的调用堆栈
bp secur32!CallSPM "k,g" 可能语法有问题
4
智能分析dump文件
!analyze -v
3
如何证明 GetTempPathA最后调用的是GetTempPathW
bp kernal32!GetTempPathW
运行代码,k查看ebp堆栈
2
如何在一个函数内部的代码行上打断点?
bp test!main+0x7c // 加上偏移地址
1
显示一个模块的所有导出符号
x xEyeLog!*
2
显示一个模块的所有虚函数
x xEyeLog!'vftable'
dds 上面函数的地址
1: 显示当前的列出的模块的名字,及加载的符号路径
lm
2:显式的加载没有加载符号的模块的符号
.reload /f @"D:/Pc/bin/xEyeList.dll"
.reload /f userver.dll
.reload /f lobby.exe
3:private pdb : 仅包含源代码的行号,如果不匹配,可能有误导,含有所有的结构体
public pdb :包含对应的函数名,共有成员
4: dds ebp
dds esp
dds eip
5:u main 查看main的地址
6:bp 0x999999下断点
7:HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows
NT/CurrentVersion/Image File Execution Options
让windbg随程序启动而启动
8:查找在哪个模块崩溃的
崩溃现场的eip:崩溃地址
显示所有模块的加载地址信息
eg:x *!
对比可看出是哪个模块崩溃的。
9:
显示当前的寄存器 r
10:
显示函数的反汇编
eg:u test!output
直接输入u 显示当前eip接下来的汇编代码
11显示一个函数的反汇编 及地址
x test!changeto4p
12 查看寄存器指向内存的内容
dc eac
13 查看指定内存的内存页属性
!address eax
14 查看局部变量的值
x
15 打开加载符号的信息
!sym noise
16 当pdb和dll的日期戳不匹配时 如何强行加载pdb?
reload命令