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.mzph.cn/news/71561.shtml

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

相关文章

go work 不同包下mod + work实现.go文件的互相调用

一、文件架构 . ├── go.mod ├── go.work ├── main │ └── main.go └── util├── go.mod└── util.go其中go.mod module testgo 1.21.0其中go.work go 1.21.0use (../util )main/main.go 1 package main …

windows自带远程桌面连接的正确使用姿势

摘要 目前远程办公场景日趋广泛&#xff0c;对远程控制的需求也更加多样化&#xff0c;windows系统自带了远程桌面控制&#xff0c;在局域网内可以实现流程的远程桌面访问及控制。互联网使用远程桌面则通常需要使用arp等内网穿透软件&#xff0c;市场上teamviewer、Todesk、向…

基于docker环境的tomcat开启远程调试

背景&#xff1a; Tomcat部署在docker环境中&#xff0c;使用rancher来进行管理&#xff0c;需要对其进行远程调试。 操作步骤&#xff1a; 1.将容器中的catalina.sh映射出来&#xff0c;便于对其修改&#xff0c;添加远程调试相关参数。 注意&#xff1a;/data/produce2201…

C++——智能指针

智能指针 文章目录 智能指针内存泄漏智能指针解决内存泄漏问题智能指针的使用及原理RAII智能指针对象的拷贝问题 C中的智能指针auto_ptrunique_ptrshared_ptrweak_ptr定制包装器C11和boost中智能指针的关系 内存泄漏 什么是内存泄漏&#xff1a;内存泄漏指因为疏忽或错误造成程…

NSSCTF2nd与羊城杯部分记录

文章目录 前言[NSSCTF 2nd]php签到[NSSCTF 2nd]MyBox[NSSCTF 2nd]MyHurricane[NSSCTF 2nd]MyJs[NSSCTF 2nd]MyAPK羊城杯[2023] D0nt pl4y g4m3!!!羊城杯[2023]ezyaml羊城杯[2023]Serpent羊城杯[2023]EZ_web羊城杯[2023]Ez_misc总结 前言 今天周日&#xff0c;有点无聊没事干&a…

Vue框架学习记录之环境安装与第一个Vue项目

Node.js的安装与配置 首先是Node.js的安装&#xff0c;安装十分简单&#xff0c;只需要去官网下载安装包后&#xff0c;一路next即可。 Node.js是一个开源的、跨平台的 JavaScript 运行时环境 下载地址&#xff0c;有两个版本&#xff0c;一个是推荐的&#xff0c;一个是最新…

Python爬虫数据存哪里|数据存储到文件的几种方式

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 爬虫请求解析后的数据&#xff0c;需要保存下来&#xff0c;才能进行下一步的处理&#xff0c;一般保存数据的方式有如下几种&#xff1a; 文件&#xff1a;txt、csv、excel、json等&#xff0c;保存数据量小。 关系型数据库…

Python小知识 - Python装饰器

Python装饰器 在Python中&#xff0c;装饰器是一个特殊的函数&#xff0c;可以将其他函数包装在装饰器函数中&#xff0c;并且将被包装的函数作为参数传递给装饰器函数。 使用装饰器的好处是可以自动在被包装的函数前后执行一些额外的代码&#xff0c;比如在函数执行前后打印日…

嵌入式开发-11 Linux下GDB调试工具

目录 1 GDB简介 2 GDB基本命令 3 GDB调试程序 1 GDB简介 GDB是GNU开源组织发布的一个强大的Linux下的程序调试工具。 一般来说&#xff0c;GDB主要帮助你完成下面四个方面的功能&#xff1a; 1、启动你的程序&#xff0c;可以按照你的自定义的要求随心所欲的运行程序&#…

PaddleX:一站式、全流程、高效率的飞桨AI套件

随着ChatGPT引领的AI破圈&#xff0c;各行各业掀起了AI落地的潮流&#xff0c;从智能客服、智能写作、智能监控&#xff0c;到智能医疗、智能家居、智能金融、智能农业&#xff0c;谁能快速将AI与传统业务相结合&#xff0c;谁就将成为企业数字化和智能化变革的优胜者。然而&am…

Git 命令行查看仓库信息

目录 查看系统config ​编辑查看当前用户&#xff08;global&#xff09;配置 查看当前仓库配置信息 查看系统config git config --system --list 1 查看当前用户&#xff08;global&#xff09;配置 git config --global --list 1 查到的是email , name 等ssl签名信息&a…

知识大杂烩(uniapp)

首先声明&#xff1a;不敢保证都管用&#xff0c;这是我自己实践得来的。 box-shadow: 这段 CSS 样式代码用于创建一个阴影效果&#xff0c;它是通过 box-shadow 属性来实现的。让我解释一下这段代码的含义&#xff1a; - box-shadow: 这是 CSS 的属性&#xff0c;用于添加阴影…

算法笔记:平衡二叉树

1 介绍 平衡二叉树&#xff08;AVL树&#xff09;是一种特殊的二叉搜索树&#xff08;BST&#xff09;&#xff0c;它自动确保树保持低高度&#xff0c;以便实现各种基本操作&#xff08;如添加、删除和查找&#xff09;的高效性能。 ——>时间都维持在了O(logN)它是一棵空…

百度百科词条怎么更新?怎么能顺利更新百科词条?

企业和个人百度百科词条的更新对于他们来说都具有重要的意义&#xff0c;具体如下&#xff1a; 对企业来说&#xff1a; 塑造品牌形象&#xff1a;百度百科是一个常被用户信任并参考的知识平台&#xff0c;通过更新企业词条可以提供准确、全面的企业信息&#xff0c;帮助企业塑…

算法专题:前缀和

文章目录 Acwing&#xff1a;前缀和示例2845.统计趣味子数组的数目思路容易理解的写法&#xff1a;前缀和两层循环存在问题&#xff1a;超时 优化写法&#xff1a;两数之和思路&#xff0c;转换为哈希表 前缀和&#xff0c;就是求数组中某一段的所有元素的和。 求子数组中某一…

Unity3D 连接 SQLite 作为数据库基础功能【详细图文教程】

一、简单介绍一下SQLite的优势&#xff08;来自ChatGPT&#xff09; 轻量级: SQLite是一个嵌入式数据库引擎&#xff0c;它的库文件非常小巧&#xff0c;没有独立的服务器进程&#xff0c;适用于嵌入到其他应用程序中&#xff0c;对于轻量级的项目或移动应用程序非常适用。零配…

Golang RabbitMQ实现的延时队列

文章目录 前言一、延时队列与应用场景二、RabbitMQ如何实现延时队列实现延时队列的基本要素整体的实现原理如下 三、Go语言实战生产者消费者 前言 之前做秒杀商城项目的时候使用到了延时队列来解决订单超时问题&#xff0c;本博客就总结一下Golang是如何利用RabbitMQ实现的延时…

结构体对齐原理及在STM32中的设计原则和实现

在嵌入式系统开发中&#xff0c;结构体作为一种常见的数据组织方式&#xff0c;在内存中的布局方式对于程序性能和内存占用具有重要影响。本文将深入探讨单片机C语言中的结构体对齐原理、重要性以及不同的对齐方式&#xff0c;并通过示例演示结构体对齐如何影响内存占用、访问性…

【代码随想录】Day 50 动态规划11 (买卖股票Ⅲ、Ⅳ)

买卖股票Ⅲ https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/ 无语了。。。 写的很好就是怎么都过不了。。。 还是就用代码随想录的写法吧。。。 class Solution { public:int maxProfit(vector<int>& prices) {int n prices.size();vector&…

权限提升-Windows本地提权-AT+SC+PS命令-进程迁移-令牌窃取-getsystem+UAC

权限提升基础信息 1、具体有哪些权限需要我们了解掌握的&#xff1f; 后台权限&#xff0c;网站权限&#xff0c;数据库权限&#xff0c;接口权限&#xff0c;系统权限&#xff0c;域控权限等 2、以上常见权限获取方法简要归类说明&#xff1f; 后台权限&#xff1a;SQL注入,数…