windbg.txt

来源:互联网 发布:硬盘检测软件 编辑:程序博客网 时间:2024/06/10 04:10

我常用的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命令

/i
忽略.pdb文件版本不匹配的情况。(如果没有包含该参数,调试器不会加载不匹配的符号文件。) 使用 /i时,即使没有明确指定,也会使用/f
参考:
http://www.dbgtech.net/windbghelp/hh/debugger/r21_metacmds_l_2fb08e4b-4d29-45cb-a63c-4222a7a29abc.xml.htm
原创粉丝点击