也是:一直听说,从未动手。

所以,用VC生成一下MAP文件,帮助调试。

一.步骤:

Project Settings-> C/C++-> Project Options:
这里输入 /Zd,将在编译时生成行信息。

Project Settings->Link-> Project Options:
/mapinfo:lines
/map:MapFileName.map
/mapinfo:exports

MapFileName是生成MAP文件的名字
第一个是生成行信息,第三个是加入导出信息。

这样就设置好了,编译出来的就有MAP文件了.

二.MAP文件:
写一个程序,编译出来:

#include <stdio.h>

int main(){
    int i = 2;
    int j ;
    scanf("%d",&j);
    i = 2;
    i = 3;
    i = 4;
    i = 5;
    i = 6;
    printf("%d",i/j);
    return 0 ;
}

然后打开MAP文件.
里面有各种全局符号,大概在文件的中间位置,有这样的东西:
Line numbers for .\Debug\4.obj(E:\pro\4\4.cpp) segment .text

3 0001:00000010     4 0001:00000024     6 0001:0000002b     7 0001:0000003c
     8 0001:00000043     9 0001:0000004a    10 0001:00000051    11 0001:00000058

可以直接Ctrl+F找到程序文件名,我这里是4.cpp
这些就是代码偏移和对应的行号.

三.调试

就刚才的程序,运行,输个0,过一下出错框就来了,
我是VISTA,下面的详细信息是:
问题签名:
问题事件名称:    APPCRASH
应用程序名:    4.exe
应用程序版本:    0.0.0.0
应用程序时间戳:    499d5ade
故障模块名称:    4.exe
故障模块版本:    0.0.0.0
故障模块时间戳:    499d5ade
异常代码:    c0000094
异常偏移量:    00001063
OS 版本:    6.0.6001.2.1.0.768.3
区域设置 ID:    2052
其他信息 1:    38fc
其他信息 2:    db4f9c1c160faa4608f429ddffa01d6f
其他信息 3:    cb3b
其他信息 4:    e8ffb2a21d4a9ed7b258f1866c9d3db8

这个偏移就是要看的了。减去1000的代码段偏移。
就是63,再对照上面的行号和地址的列表
11 0001:00000058
这个是VC翻译的时候,第11行显然会对应多条指令。
这一指令群的开始地址是58.
这个是最接近63且比63小的地址,所以问题应该出在这一行上。
再看代码:
printf("%d",i/j);
发现这里有个除0错误。

MAP文件和调试(VC)(从崩溃地址找出错源码位置)相关推荐

  1. 仅通过崩溃地址找出源代码的出错行

    仅通过崩溃地址找出源代码的出错行 作者:老罗 http://www.vckbase.com/document/viewdoc/?id=908 提交者:eastvc 发布日期:2003-10-23 9: ...

  2. 通过崩溃地址找错误行数之Delphi版

    通过崩溃地址找错误行数之Delphi版 2009-5-11 17:42:35 来源: 转载 作者:网络 访问:360 次 被顶:2 次 字号:[大 中 小] 核心提示:什么是 MAP 文件?简单地讲, ...

  3. 微信小程序开发之文件上传下载应用场景(附Demo源码)

    微信小程序开发之文件上传下载应用场景(附Demo源码),Demo为小相册应用,源码在附件中,本示例需要腾讯云支持. http://www.henkuai.com/forum.php?mod=viewt ...

  4. php 本地mysql 代码_基于本地数据库的 IP 地址查询 PHP 源码

    * 纯真 IP 数据库查询 * * 参考资料: * - 纯真 IP 数据库 http://www.cz88.net/ip/ * - PHP 读取纯真IP地址数据库 http://ju.outofmem ...

  5. idea调试源代码c语言,IDEA阅读spring源码并调试

    目标:搭建起Spring源码阅读和代码调试跟踪的环境,顺便建立一个简单的Demo,能够调试Spring的源代码 本节,主要介绍一下Spring源码阅读和调试的相关环境搭建,并使用MVN创建一个非常简单 ...

  6. 基于纯真本地数据库的 IP 地址查询 PHP 源码

    <?php /*** 纯真 IP 数据库查询 * * 参考资料:* - 纯真 IP 数据库 http://www.cz88.net/ip/* - PHP 读取纯真IP地址数据库 http://j ...

  7. VC++获取磁盘剩余空间(附源码)

      VC++开发常用功能一系列文章 (欢迎订阅,持续更新...) 第23章:VC++获取磁盘剩余空间(附源码) 源代码demo已上传到百度网盘:永久生效  ,代码实现了获取任一磁盘的剩余空间,返回MB ...

  8. Dart/Flutter地址智能识别源码,类似顺丰填写地址的智能识别,识别率95%+

    smartParseAddress Dart/Flutter地址智能识别源码,类似顺丰填写地址的智能识别,识别率95%+ 站在巨人肩膀上,前排感谢:GitHub@wzc570738205 实际就是将地 ...

  9. WinDBg定位asp.net mvc项目异常崩溃源码位置

    项目介绍:asp.net mvc + angular +iis+windows server 系统莫名崩溃 最近有个系统默认奇妙崩溃50x,服务整体变成无响应,当运维告知我只有重启应用程序池项目才能正 ...

最新文章

  1. Tenda路由器设置
  2. 从一个servlet转发到另一个servlet_javaweb02-创建第一个Servlet
  3. PostgreSQL的generate_series函数应用例子
  4. PHP中的PHP_EOL变量
  5. fat32 linux 打包工具_11款最棒的Linux数据恢复工具发布啦!
  6. 微信企业号三个连接模式
  7. 打开链接跳转浏览器代码
  8. Python开发基础 day7 迭代器
  9. 简历javaweb项目描述怎么写_简历要怎么写
  10. pg_rewind 快速角色切换
  11. Linux系统镜像下载(centOS-7)教程
  12. Silverlight 4 Tools for Visual Studio 2010手动一步一步安装
  13. linux程序性能分析工具stap,《面向应用开发者的系统指南》CPU篇之使用systemtap分析进程的行为...
  14. ionic slidebox 嵌套问题
  15. 重新学javaweb---cookiesession
  16. IT外包服务内容介绍
  17. win7右键反应特别慢的问题
  18. 微信公众号商城前景分析
  19. *.axf: Error: L6218E: Undefined symbol xxx(xxx.o)问题解决与inline函数的声明
  20. 微信小程序快递取件及上门服务

热门文章

  1. 缺省参数-缺省参数的注意事项
  2. 函数的嵌套调用-函数嵌套调用的执行线路图
  3. 享元设计模式coding
  4. 数据切分 垂直切分、垂直拆分与水平拆分的优缺点
  5. OAuth2(一)——核心概念
  6. Netty--Reactor模式
  7. java影院购票系统开题报告,开题报告-网上电影院购票系统的设计与实现.doc
  8. CoolQ/DingTalk 实现CI/CD消息推送到群
  9. vue mixins
  10. SaaS服务创投:场景多元化 平台建设稳中有序