VS2012下通过MAP追踪异常代码的位置
2018-03-25 21:37
267 查看
[cpp] view plain copy#include "stdafx.h"
double DivideBy (double dividend, double divisor)
{
double retVal = dividend / divisor;
return retVal;
}
int _tmain(int argc, _TCHAR* argv[])
{
DivideBy (1.0, 0.0);
return 0;
}
编译时生成MAP文件,以及COD文件:1. Configuration Properties->Linker->Debugging->Generate Map File,设置为Yes (/MAP).2. Configuration Properties->C/C++->Output Files->Assembler Output,设置为Assembly, Machine Code and Source (/FAcs).注:若Configuration Properties->C/C++->Optimization->Optimization需要设置为Disabled (/Od),否则,MAP文件内容可能会被优化而无法定位到出错的函数。
运行exe,肯定会出现异常。
查看详细信息,找到Exception Offset: 00001008,因为exe默认的基地址是400000,所以相加后=401008.
第一步,打开程序的MAP文件,定位出错的函数:
可以看出第一个大于401008的位置是_wmain函数,再往前查看,可以知道出错的函数为DivideBy。第二步,打开相应的COD文件,定位出错的代码行:由上面可以算出一个偏移量=401008-401000=8
所以,代码行就是第5行。
double DivideBy (double dividend, double divisor)
{
double retVal = dividend / divisor;
return retVal;
}
int _tmain(int argc, _TCHAR* argv[])
{
DivideBy (1.0, 0.0);
return 0;
}
编译时生成MAP文件,以及COD文件:1. Configuration Properties->Linker->Debugging->Generate Map File,设置为Yes (/MAP).2. Configuration Properties->C/C++->Output Files->Assembler Output,设置为Assembly, Machine Code and Source (/FAcs).注:若Configuration Properties->C/C++->Optimization->Optimization需要设置为Disabled (/Od),否则,MAP文件内容可能会被优化而无法定位到出错的函数。
运行exe,肯定会出现异常。
查看详细信息,找到Exception Offset: 00001008,因为exe默认的基地址是400000,所以相加后=401008.
第一步,打开程序的MAP文件,定位出错的函数:
可以看出第一个大于401008的位置是_wmain函数,再往前查看,可以知道出错的函数为DivideBy。第二步,打开相应的COD文件,定位出错的代码行:由上面可以算出一个偏移量=401008-401000=8
所以,代码行就是第5行。
相关文章推荐
- VS通过MAP追踪异常代码的位置详解
- VS2012下通过MAP追踪异常代码的位置
- VS2012 msvcr110d.dll xxxxxx处有未经处理的异常:0xC0000005:写入位置xxxxxx时发生访问冲突(scanf_s引起)-已解决
- 在VS13上编译通过的代码放在12上编译-错误:l __dtoui3 referenced in function _event_debug_map_HT_GROW
- Java Map 通过 key 或者 value 过滤的实例代码
- iOS 通过代码修改AutoLayout的约束连线,来实现调整view的位置
- Java map结构通过value来追踪key
- IOS JSBox 安装 VSCode 通过插件JSBox 同步编辑代码到iPhone
- VS2012代码辅助工具 ReSharper7 快捷键汉化版
- VS编译代码未通过,常见问题。
- VS代码编译能通过,但是出现红色波浪线的问题
- 通过代码描述Java类中的各成分加载顺序和内存存放位置
- VS检测内存泄漏,定位泄漏代码位置方法
- vs2012 格式化代码和快速注释快捷键(亲测)
- vs2012下mfc程序通过ado方式使用access数据库编译的程序在xp底下无法使用解决方法
- 通过崩溃地址中找到异常代码行(转)
- Delphi通过Map文件查找内存地址出错代码所在行
- vs2012 Silverlight项目签名报错异常的处理方式
- VS2012 打开cocos2d项目时出现MSB8020的错误代码
- VS2012 创建基于 NET4.0 的WCF程序时引发System.ServiceModel.ServiceActivationException异常的解决办法