结合drwtsn32.log和.Map文件的查看、定位程序错误位置

原创 2013年12月02日 17:29:39

写下大致步骤方便以后查找

参考内容在两个链接的后半部分

http://blog.csdn.net/nokianasty/article/details/8504432

http://blog.chinaunix.net/uid-7186957-id-2677948.html

主要步骤:

1、在drwtsn32.log找到错误位置:错误 ->00458861 ff9098000000     call dword ptr [eax+0x98] ds:0023:bf0500f8=????????,记住其中的addr =00458861。

2、在对应的.map文件中的Address         Publics by Value       Rva+Base                                                  Lib:Object   的Rva+Base列找到刚刚大于00458861一点的行。如下:

        0001:000577d7       ?AfxCallWndProc@@YGJPAVCWnd@@PAUHWND__@@IIJ@Z 004587d7 f   nafxcw:wincore.obj
        0001:000578d4       ?GetCurrentMessage@CWnd@@KGPBUtagMSG@@XZ 004588d4 f   nafxcw:wincore.obj

其中第二是我们所要找的行,第一行是需要用到定位的。

3、在第一行中找到nafxcw:wincore.obj位置(一般是xx.obj,这里没找到,只找到相关的nafxcw.lib)如下

Line numbers for D:\应用软件-安装\VC98\MFC\LIB\nafxcw.lib(wincore.cpp) segment .text

    35 0001:0005746e    38 0001:00057489    39 0001:000574c7    40 0001:00057505
    41 0001:00057543    53 0001:00057577    54 0001:0005757f    55 0001:00057595
    58 0001:000575b5    59 0001:000575be    60 0001:000575d1    61 0001:000575da

                                   。。。。。。。。。。。。。。。。。。。。。。

   205 0001:00057835   210 0001:0005783c   211 0001:00057840   212 0001:00057848
   215 0001:00057856   218 0001:00057867 
  219 0001:00057872   221 0001:0005787f
   223 0001:00057881   224 0001:00057886   226 0001:0005788a   230 0001:0005789e
   233 0001:000578a0   235 0001:000578a4   237 0001:000578ac   239 0001:000578b5
   240 0001:000578b7   241 0001:000578c3   244 0001:000578d4   247 0001:000578e6

4、要得到行数的地址:0x00458861-0x00400000(程序装载地址)-0x00001000(PE头文件的大小)=0x00057861

5、发现0x00057861在第3行中相应范围行为  211 0001:00057840   212 0001:00057848
                                                                                215 0001:00057856   218 0001:00057867 

说明问题就在wincore.cpp的212行到215行之间

VS2012下通过MAP追踪异常代码的位置

本文中涉及的编译环境为Visual Studio 2012. #include "stdafx.h" double DivideBy (double dividend, double di...
  • crazyboyzzx
  • crazyboyzzx
  • 2013年12月13日 14:28
  • 2853

win7+vs2010通过map文件和cod文件找到崩溃的代码行

用来演示出错的源代码: #include "stdio.h" void errorFun(int * p)    {    *p=1;    }    int main()    {    ...
  • zengtao666
  • zengtao666
  • 2013年10月23日 16:40
  • 670

VC程序错误定位方法

KB:Visual C++Q196755 - HOWTO: Determine the Location of a Crash如何定位程序崩溃的地方概述本文档说明如何根据错误消息中的地址来找到错误发生...
  • nustchen
  • nustchen
  • 2005年03月30日 15:38
  • 2714

集成GoogleMap,实现定位和获取位置信息

自学android几个月,前几天粗略学习了下google地图集成,特地记录该文 1.准备 我使用的是AS2.2.2,首先翻墙注册google开发者帐号,准备获取API Key,网上有许多相关资料我就不...
  • linyaodai
  • linyaodai
  • 2017年02月17日 12:48
  • 4185

Html+Css_利用img 的usemap属性 和 map 以及 area(list) 对图像敏感区域定位

1.利用img 的usemap属性,利用usemap对应到map的name或者id。 2.并在map标签里面嵌套多个area标签。 3.不同的area里面的href 属性 以及相对于图像原点(0,...
  • u010003835
  • u010003835
  • 2015年11月02日 11:28
  • 2548

Linux 使用core file文件快速定位程序崩溃代码行

问题描述如果在 Linux下编写程序,有时运行程序的时候程序崩溃,比如说只有“Segmentation fault (core dumped) ”,程序比较小的话,还可以一行一行查看,但是如果程序很庞...
  • zwhlxl
  • zwhlxl
  • 2015年07月26日 21:47
  • 1169

Linux 下使用 gdb 定位 crash 位置

下面这一段代码会出现SEGV错误。 #include int foo(void) { int *i = NULL; *i = 0; } int main(void) { foo(); r...
  • robertsong2004
  • robertsong2004
  • 2016年09月08日 16:16
  • 721

linux 下,查询某个文件位置 & 编辑文本时,定位文件中某个字符串位置

查询某个文件的位置 find -name '*.txt' 编辑文本时,定位文件中某个字符串位置 斜杠 +  字符串 + enter...
  • liuao107329
  • liuao107329
  • 2016年11月29日 15:44
  • 1351

查看程序崩溃时的调用堆栈错误

在程序release之后,不可避免的会存在一些bug,测试人员和最终用户如何在发现bug之后指导开发人员进行更正呢?在MS的网站上,有一篇名为"Under the hook"的文章,讲述了如何把程序崩...
  • qq462555490
  • qq462555490
  • 2015年04月07日 10:49
  • 239

keil查看各个文件所占资源

1.打开keil工程,双击红色框框,就会跳出*.map的文件    2.或者在生成文件中找到*.map也可以 3.下面我们来分析下生产的map文件 ========================...
  • a369000753
  • a369000753
  • 2016年04月06日 18:32
  • 2242
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:结合drwtsn32.log和.Map文件的查看、定位程序错误位置
举报原因:
原因补充:

(最多只允许输入30个字)