首页
社区
课程
招聘
[旧帖] 蓝屏分析,Windbg dump文件分析问题 0.00雪花
发表于: 2014-8-4 12:32 4366

[旧帖] 蓝屏分析,Windbg dump文件分析问题 0.00雪花

2014-8-4 12:32
4366
我想问一下,为什么使用WinDBG命令:!analyze -v分析转储文件时。

有时候会出现Context(上下文寄存器信息),有时候却是TRAP_FRAME(异常时上下文环境信息),但有时候却不显示上下文信息。

我想问问,在根据STACK_TEXT找到错误堆栈时,如何能够显示指定堆栈或函数调用的上下文寄存器信息?

例:
f7ce4c7c 805a499d 82a7d340 82823000 00000000 Test1!DriverEntry+0x23 [e:\projects\001_dr~1\bsod\test1\test1\test1.cpp @ 31]

如何能准确的显示调用805a499d时的上下文寄存器信息?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 135
活跃值: (63)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
.context试试。或者单步一下。
2014-8-4 13:16
0
雪    币: 45
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
  1、 打开Dump格式文件

  打开WinDbg,通过菜单[File] à [Open Crash dump] 选择dump文件打开,也可通过CMD打开Dos命令窗口,切换到WinDbg所在目录,利用命令:

  WinDbg –z “D:/Lines2009-7-25-22-20-33-900.dmp”

  本文编写了一个简单能产生除数为0异常的程序,让其运行,产生崩溃,通过drwtsn产生dmp文件,然后通过windbg分析dmp文件,定位程序bug。

  www.sytm.net/wssc

  程序源代码:

  void Crash(void)

  {

  int i = 1;

  int j = 0;

  i /= j;

  }

  void main(void)

  {

  Crash();

  }

  编译环境:vc++6.0

  编译器设置:

#FormatImgID_1#
  这一步设置,要求对release版本不使用优化,如果使用优化,上面源代码中Crash(void)函数将不被汇编。

  这一步设置,产生release版本的调试符号表,为后续定位错误准备。

  步骤:

  1、 安装drwtsn32

  用户可以通过drwtsn32命令,查看dmp文件会被保存在何处。

  2、 安装windbg,Windbg下载地址:

  http://www.microsoft.com/whdc/devtools/debugging/default.mspx

  3、 设置windbg

  A、符号表路径设置

  其中;srv*d:/symbolslocal*http://msdl.microsoft.com/download/symbols设置的目的是下载该程序用到的操作系统相关的库函数的符号表到本地。

  B、源代码路径设置

  C、dmp文件导入

  2、 分析dump文件

  若生成的dump文件在本机,dump文件中将包含调试需要的PDB文件及源代码路径,若不在本机,可以通过 WinDbg菜单[File] à [Symbol File path] 及 [Source File Path] 分别设置PDB文件路径和源代码路径。如果程序涉及到DLL,需要将EXE、DLL所有涉及的PDB、源代码路径都包括。使用命令:

  !analyze –v

  将分析dump文件,并显示程序崩溃处于的代码行:
2014-8-6 11:06
0
游客
登录 | 注册 方可回帖
返回
//