woaidongmao

文章均收录自他人博客,但不喜标题前加-[转贴],因其丑陋,见谅!~
随笔 - 1469, 文章 - 0, 评论 - 661, 引用 - 0
数据加载中……

使用windbg分析dmp文件定位程序bug

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

目的:学习windbg基本功能使用。

程序源代码:

void Crash(void)

{

    int i = 1;

    int j = 0;

    i /= j;

    }

void main(void)

{

   

    Crash();

}

编译环境:vc++6.0

编译器设置:

clip_image001

clip_image002

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

clip_image003

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

步骤:

1、 安装drwtsn32

clip_image004

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

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

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

3、 设置windbg

A、符号表路径设置

   clip_image005

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

B、源代码路径设置

clip_image006

Cdmp文件导入

clip_image007

clip_image008

上图中红色部分标明的地方,说明windbg已经分析出了程序异常的上下文环境,比如eip00401018说明该地址处产生异常。

clip_image009

上图为当前的调用堆栈,可知故障出在Crash函数里面。

posted on 2011-05-11 18:14 肥仔 阅读(3498) 评论(0)  编辑 收藏 引用 所属分类: 调试


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理