Visual Studio(2022)生成链接过程的.map映射文件以及.map映射文件的内容说明

微软的官方说明

/MAP(生成映射文件) | Microsoft Learn

设置步骤

        1. 右键项目属性, 连接器 -> 常规 -> 启用增量链接,设置为否。如下图:

        2. 连接器 -> 调试

                生成调试信息  设置为 生成调试信息 (/DEBUG)

                生成程序数据库文件  设置为 指定路径文件名,默认系统会自动设置

                生成映射文件  设置为  是 (/MAP)

                映射文件名  设置为 指定的完整路径, 例如 aaa/Debug/test.map

                具体如下图:

                

                重新生成项目,成功生成,如下图所示:

部分.map文件示例内容如下所示:

demo_ccwindowsTimestamp is 64eed0a8 (Wed Aug 30 13:16:24 2023)Preferred load address is 0000000140000000Start         Length     Name                   Class0001:00000000 00003290H .text$mn                CODE0001:00003290 00000040H .text$mn$00             CODE0001:000032d0 00000090H .text$x                 CODE0002:00000000 00000240H .idata$5                DATA0002:00000240 00000038H .00cfg                  DATA0002:00000278 00000008H .CRT$XCA                DATA0002:00000280 00000008H .CRT$XCAA               DATA0002:00000288 00000008H .CRT$XCZ                DATA0002:00000290 00000008H .CRT$XIA                DATA0002:00000298 00000008H .CRT$XIAA               DATA0002:000002a0 00000008H .CRT$XIAC               DATA0002:000002a8 00000008H .CRT$XIZ                DATA0002:000002b0 00000008H .CRT$XPA                DATA0002:000002b8 00000008H .CRT$XPZ                DATA0002:000002c0 00000008H .CRT$XTA                DATA0002:000002c8 00000008H .CRT$XTZ                DATA0002:000002d0 00000000H .gehcont$y              DATA0002:000002d0 00000000H .gfids$y                DATA0002:000002d0 00000ab0H .rdata                  DATA0002:00000d80 00000080H .rdata$CastGuardVftablesA DATA0002:00000e00 00000080H .rdata$CastGuardVftablesC DATA0002:00000e80 00000080H .rdata$voltmd           DATA0002:00000f00 00000360H .rdata$zzzdbg           DATA0002:00001260 00000008H .rtc$IAA                DATA0002:00001268 00000008H .rtc$IMZ                DATA0002:00001270 00000008H .rtc$IZZ                DATA0002:00001278 00000008H .rtc$TAA                DATA0002:00001280 00000008H .rtc$TMZ                DATA0002:00001288 00000008H .rtc$TZZ                DATA0002:00001290 0000042cH .xdata                  DATA0002:000016bc 00000000H .edata                  DATA0002:000016bc 0000003cH .idata$2                DATA0002:000016f8 00000018H .idata$3                DATA0002:00001710 00000240H .idata$4                DATA0002:00001950 0000059eH .idata$6                DATA0003:00000000 00020060H .data                   DATA0003:00020060 00000620H .bss                    DATA0004:00000000 00000468H .pdata                  DATA0005:00000000 00000060H .rsrc$01                DATA0005:00000060 00000180H .rsrc$02                DATAAddress         Publics by Value              Rva+Base               Lib:Object0000:00000000       __AbsoluteZero             0000000000000000     <absolute>0000:00000000       ___safe_se_handler_count   0000000000000000     <absolute>0000:00000000       ___safe_se_handler_table   0000000000000000     <absolute>0000:00000000       __arm64x_extra_rfe_table   0000000000000000     <absolute>0000:00000000       __arm64x_extra_rfe_table_size 0000000000000000     <absolute>0000:00000000       __arm64x_native_entrypoint 0000000000000000     <absolute>

        有了这些信息,之后就可以通过.map文件查看编译生成的代码细节,以及分析相关程序问题。       

关于.map文件结构的细节示例说明

Start

Length

Name

Class

0001:

00000000

00000304H

.text

CODE

       PE 格式 - Win32 apps | Microsoft Learn

      PE 格式 - Win32 apps | Microsoft Learn

     .debug 段,在对象文件中用于包含编译器生成的调试信息,在映像文件中用于包含生成的所有调试信息。 本段说明如何在对象和映像文件中打包调试信息。PE 格式 - Win32 apps | Microsoft Learn

     .bss 段(Block Started by Symbol segment), 未初始化数据(自由格式),一般在初始化时bss 段部分将会清零。bss段属于静态内存分配,即程序一开始就将其清零了。这里主要存放没有初始化的全局变量或者初始化为0值的全局变量。

     .sbss 段,用于存放 near ptr 寻址或者叫相对寻址的未初始化数据。

     .text 端,存放执行程序的代码。

     .data 段,初始化数据(自由格式),保存已经初始化的全局变量。

     .rdata 段,保存已经初始化的只读数据。

     .drective 段,指令段。链接器在处理信息后会删除 .drectve 节,因此该节不会出现在所链接的映像文件中。

     .edata 段,存放export symbols,包含有关其他映像可以通过动态链接访问的符号的信息。 导出的符号通常在 DLL 中找到,但 DLL 也可以导入符号。

     .idata 段,存放import symbols, 导入符号的所有映像文件都包含此.idata端。

     .pdata 段,包含用于异常处理的函数表条目的数组。

     .reloc 段,基址重定位表包含映像中所有基址重定位的条目。

     .tls 段, 为静态线程本地存储 (TLS) 提供直接 PE 和 COFF 支持。

     .rsrc 段,  资源按多级二进制排序树结构编制索引。

     .cormeta 段, 存放CLR元数据。

     .sxdata 段,对象的有效异常处理程序在该对象的 .sxdata 段中列出。

其他:

    1. vs生成的map文件详解_vs生成map文件_ivy_0709的博客-CSDN博客

    2. MAP File Contents - Debugging Applications - Visual Basic Planet

    3. Finding Crash Information Using the MAP File - CodeProject

...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/118801.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

风险评估

风险评估概念 风险评估是一种系统性的方法&#xff0c;用于识别、评估和量化潜在的风险和威胁&#xff0c;以便组织或个人能够采取适当的措施来管理和减轻这些风险。 风险评估的目的 风险评估要素关系 技术评估和管理评估 风险评估分析原理 风险评估服务 风险评估实施流程

AutoSAR CP 飞阅TIME

目录 什么是autosar autosar 做了什么 Foundation、CP、AP CLASSIC PLATFORM &#xff08;CP&#xff09; ADAPTIVE PLATFORM 基于autosar 开发 SWC Port Runnables RTE BSW MCAL CDD I/O Hardware Abstraction Communication Hardware Abstraction Memory Har…

C#基础知识点记录

目录 课程一、C#基础1.C#编译环境、基础语法2.Winform-后续未学完 课程二、Timothy C#底层讲解一、类成员0常量1字段2属性3索引器5方法5.1值参数&#xff08;创建副本&#xff0c;方法内对值的操作&#xff0c;不会影响原来变量的值&#xff09;5.2引用参数&#xff08;传的是地…

财务部发布《企业数据资源相关会计处理暂行规定》

导读 财务部为规范企业数据资源相关会计处理&#xff0c;强化相关会计信息披露&#xff0c;根据《中华人民共和国会计法》和相关企业会计准则&#xff0c;制定了《企业数据资源相关会计处理暂行规定》。 加gzh“大数据食铁兽”&#xff0c;回复“20230828”获取材料完整版 来…

【Java核心知识】JUC包相关知识

文章目录 JUC包主要内容Java内置锁为什么会有线程安全问题Synchronize锁Java对象结构Synchronize锁优化线程间通信Synchronize与wait原理 CAS和JUC原子类CAS原理JUC原子类ABA问题 可见性和有序性为什么会有可见性参考链接 显式锁Lock接口常用方法显式锁分类显式锁实现原理参考链…

gitlab-runner安装和部署项目

目录 1.安装gitlab-runner 1.1 添加官方仓库 1.2.1 安装最新版本 1.2.2 安装指定版本&#xff08;可选&#xff09; 1.2.3 更新runner&#xff08;可选&#xff09; 1.3 随便点开gitlab上的一个项目 1.4 gitlab-runner的注册 2.配置gitlab-runner 3.runner一些命令 gi…

Blender界面学习02

学习视频 【基础篇】1.3 认识界面_哔哩哔哩_bilibili 基本的3d建模的流程是什么&#xff1f; 四个角现出加号时可以拆分窗口&#xff0c;也可以合并窗口 向自己的方向拉是合并&#xff0c;向不是自己的方向拉是合并 如果界面搞乱后需要回到原来的布局 然后在新建的布局上右击 …

HTML5+CSS3+JS小实例:科技感满满的鼠标移动推开粒子特效

实例:科技感满满的鼠标移动推开粒子特效 技术栈:HTML+CSS+JS 效果: 源码: 【html】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport&qu…

2、[春秋云镜]CVE-2022-30887

文章目录 一、靶标介绍二、复现过程 一、靶标介绍 二、复现过程 &#xff08;1&#xff09;打开网址。 &#xff08;2&#xff09;查看源代码 邮件格式&#xff1a;第一个符号不准为&#xff0c;后续符号有、.&#xff1b; 密码格式&#xff1a;匹配所有小写字母&#xff0c…

2. postgresql并行扫描(1)——pg强制走并行扫描建表及参数配置

转载自&#xff1a;https://developer.aliyun.com/article/700370 1. 参数设置 1.1 postgresql.conf中修改 # 1、总的可开启的WORKER足够大 max_worker_processes 128# 2、所有会话同时执行并行计算的并行度足够大 max_parallel_workers64# 3、单个QUERY中并行计算NODE开…

编译KArchive在windows10下

使用QT6和VS2019编译KArchive的简要步骤&#xff1a; 安装 Qt &#xff0c;我是用源码自己编译的 "F:\qtbuild"安装CMakefile并配置环境变量安装Git下载ECM源码 https://github.com/KDE/extra-cmake-modules.git-------------------------------------------------…

C语言之练习题

欢迎来到我的&#xff1a;世界 希望作者的文章对你有所帮助&#xff0c;有不足的地方还请指正&#xff0c;大家一起学习交流 ! 目录 前言简答题第一题第二题 编程题第一题第二题第三题第四题 总结 前言 这期文章由&#xff1a;两题问答题四道编程题&#xff1b;小孩在文章中写…

远程访问Linux的DataEase数据可视化分析,有哪些推荐的工具?

DataEase 是开源的数据可视化分析工具&#xff0c;帮助用户快速分析数据并洞察业务趋势&#xff0c;从而实现业务的改进与优化。是开源的数据可视化分析工具&#xff0c;帮助用户快速分析数据并洞察业务趋势&#xff0c;从而实现业务的改进与优化。 在本地搭建后,借助cpolar 内…

r 安装源码包 安装本地r包

总结一下手动安装R包 - 简书 (jianshu.com)https://www.jianshu.com/p/2a7a36414734 #BiocManager::install("simplifyEnrichment") #BiocManager::install("EnsDb.Hsapiens.v86")#下载包 之后 手动安装 #install.packages("~/datasets/EnsDb.Hsapien…

Unity 粒子特效遮罩(ParticleMask)

1.需求&#xff1a; 游戏中粒子特效能实现非常好的效果&#xff0c;但是由于粒子特效是独立的系统&#xff0c;Unity自带的Mask普通的遮罩&#xff0c;遮不住粒子特效。 2.实现原理&#xff1a; 通过shader把超出范围的粒子纹理(Texture)&#xff0c;改成透明颜色&#xff0…

opencv android sdk 使用中的问题

Plugin with id ‘kotlin-android’ not found 在build.gradle(:app)中添加以下内容 buildscript {ext {Kotlin_Verion "1.9.10"}dependencies {classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$Kotlin_Verion"}repositories {mavenCentral()} …

stm32----SPI协议

一、概述 SPI&#xff08;Serial Peripheral Interface&#xff0c;串行外围设备接口&#xff09;&#xff0c;是Motorola公司提出的一种同步串行接口技术&#xff0c;是一种高速、全双工、同步通信总线&#xff0c;在芯片中只占用四根管脚用来控制及数据传输&#xff0c;节约…

docker linux(centos 7) 安装

这是个目录 1:安装1:手动安装(适用于centos7)之一2:手动安装(适用于centos7)之二3&#xff1a;一键安装docker4:二进制安装1&#xff1a;下载二进制包2&#xff1a;解压3&#xff1a;移动文件4&#xff1a;后台运行docker5&#xff1a;测试 dicker命令表999&#xff1a;遇到的问…

华为数通方向HCIP-DataCom H12-821题库(单选题:181-200)

第181题 某管理员需要创建AS Path过滤器(ip as-path-iter),允许AS_Path中包含65001的路由通过,那么以下哪一项配置是正确的? A、​​ip as-path-filter 1 permit 65001​​ B、​​ip as-path-filter 1 permit "65001​​ C、​​ip as-path-filter 1 permit *6500…

2023高教社杯数学建模思路 - 案例:ID3-决策树分类算法

文章目录 0 赛题思路1 算法介绍2 FP树表示法3 构建FP树4 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 算法介绍 FP-Tree算法全称是FrequentPattern Tree算法&#xff0c;就是频繁模…