VS2005 使用MAP文件分析程序崩溃
1星 需积分: 40 125 浏览量
更新于2024-09-15
1
收藏 28KB DOC 举报
"VS MAP 文件使用方法用于查找系统崩溃的原因,尤其在处理多线程程序时,能够帮助定位到导致崩溃的函数。虽然VS 2005不再提供行号信息,但可以通过生成MAP和COD文件来辅助调试。"
在Visual Studio 2005中,当你遇到一个程序崩溃,但无法直接通过调试找到具体崩溃位置时,可以利用MAP文件来辅助分析。通常,常规的调试方式能告诉我们哪一行代码导致了崩溃,但对于多线程程序,这种调试可能变得复杂。在这种情况下,你可以通过以下步骤生成MAP和COD文件:
1. **生成MAP文件**:
- 打开项目属性页 (property->Configuration Properties)。
- 转到Linker->Debugging设置。
- 将“Generate Map File”选项设置为Yes(/MAP)。
2. **生成COD文件**:
- 进入C/C++配置属性 (property->ConfigurationProperties->C/C++)。
- 在Output Files下的Assembler Output选项中,选择“Assembly, Machine Code, and Source (/FAcs)”。
- 这将生成包含机器码和源代码的文件。
举个简单的例子,假设我们有一个程序,其中`errorFun`函数中的`*p=1;`这行代码会导致崩溃,因为指针`p`未分配内存。运行时会抛出一个`Access violation`异常,如“Unhandled exception at 0x004113b1 in testError.exe: 0xC0000005: Access violation writing location 0x00000000”。
3. **分析MAP文件**:
- 在调试目录下找到并打开MAP文件。
- 这个文件会包含一些链接信息,以及每个函数的起始地址。
- 寻找与崩溃地址(0x004113b1)相对应的函数,这将是导致崩溃的函数。
通过这种方式,尽管不能直接获取到崩溃的行号,但可以确定是哪个函数引发了问题。然后,结合COD文件,可以进一步查看该函数的机器码,理解在哪个操作上发生了错误。
VS MAP文件和COD文件是解决多线程程序崩溃问题的有效工具,它们可以帮助开发者绕过没有行号信息的限制,深入到函数级别进行调试。在面对复杂的程序错误时,这些工具的使用显得尤为重要,因为它们能提供更详细的调用栈和内存访问情况,从而帮助我们找出并修复问题。
2018-07-19 上传
2022-09-21 上传
2017-07-08 上传
2019-02-21 上传
酱油肥仔
- 粉丝: 4
- 资源: 16
最新资源
- 构建基于Django和Stripe的SaaS应用教程
- Symfony2框架打造的RESTful问答系统icare-server
- 蓝桥杯Python试题解析与答案题库
- Go语言实现NWA到WAV文件格式转换工具
- 基于Django的医患管理系统应用
- Jenkins工作流插件开发指南:支持Workflow Python模块
- Java红酒网站项目源码解析与系统开源介绍
- Underworld Exporter资产定义文件详解
- Java版Crash Bandicoot资源库:逆向工程与源码分享
- Spring Boot Starter 自动IP计数功能实现指南
- 我的世界牛顿物理学模组深入解析
- STM32单片机工程创建详解与模板应用
- GDG堪萨斯城代码实验室:离子与火力基地示例应用
- Android Capstone项目:实现Potlatch服务器与OAuth2.0认证
- Cbit类:简化计算封装与异步任务处理
- Java8兼容的FullContact API Java客户端库介绍