window vs map文件详解

1.如何设置生成map文件

2.map文件内容

1.首部信息

2.段(section)信息——information about the sections in this module

1.sections的介绍:

2.内存分布

3.函数信息——actual symbolic information

4.静态符号

1.如何设置生成map文件
链接的时候生成map

打开项目属性-》链接器-》调试-》

生成映射文件: 选择 是(/map)

2.map文件内容
pdb和map文件均为调试用

pdb记录数据和调试信息

map记录地址、长度等信息

网上介绍map文件内容的资料比较少,下面是搜到的参考的资料

https://blogs.msdn.microsoft.com/hopperx/2006/09/14/using-map-files-part-1/

1.首部信息
第一行 模块名字

第二行  link.exe 链接模块的时间戳

第三行 首选的加载地址(可简记为 PLA ) Preferred load address,只是首选而已,不一定是真正的加载到这个地址。一般的首选地址都是00400000,但是不可能都加载到这个地址上,如果这个地址已经被用了,就用进行地址rebase。

2.段(section)信息——information about the sections in this module
Start 使用的是 段地址形式 = 段号 : 段内偏移

Length 自然就是这个section的长度。

Name 段的名字

Class 段的类型分类么 数据段 代码段

1.sections的介绍:
参考:https://docs.microsoft.com/zh-cn/windows/desktop/Debug/pe-format#section-data



1   .text 代码段是存放了程序代码的数据,假如机器 中有数个进程运行相同的一个程序,那么它们就可以使用同一个代码段。

2   .bss 和 .data 挨在一起,都是放在一个段里的,0004段。

bss段由于都是到时候初始化为0,所以不需要包含字节数据 better save space

全局变量 如果初始化了就放在data区,如果没有初始化就放在bss区 

.bss是不占用.exe文件空间的,其内容由操作系统初始化(清零);

而.data却需要占用,其内容由程序初始化。

(const全局变量和static全局变量不知道放在哪里,找不到。)

3   .rdata Read-only initialized data:只读的初始化的数据:比如const数据

4   .edata Export tables : 其他映像文件可以访问的符号,通常在dll中会有导出符号

5   .idata Import tables

2.内存分布


图来自 https://blog.csdn.net/u014470361/article/details/79297601

对应上述map中的段区。 低地址开始 只读,读写,运行时分配

0002 应该是代码区,只读

0003 应该是常量区,只读

0004 应该是静态区

堆区和栈区 在程序运行起来以后才会有,所以map中没有对应的。

3.函数信息——actual symbolic information
前面的 Address 是分段地址,0000,0001,0002、、、表示段号,后面的表示段内的偏移 。

可以推算出:

0001 段的起始地址是 0x00010000

0002 段的起始地址是 0x00011000

截取一行分析:

Rva+Base = 00411690

因为base是Referred Load Address,Base = 00400000

所以Rva = 00011690 RVA是 Relative Virtual Address 称为相对虚拟地址, 是基于Base来说

也就是相对于基地址的偏移是00011690

也就是等于前面的Address

0002:00000690 = 00011690 (0002段起始地址从 00011000开始)

1.后面有f 代码的是 function 函数信息。

2.后面的main.obj 说明这个函数来着 main.obj (main.obj 链接成为 test.exe),说明前面两个函数所在的源文件应该是main.c 或者 main.cpp

4.静态符号

 
————————————————
版权声明:本文为CSDN博主「ivy_0709」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012138730/article/details/90611728

发布了1 篇原创文章 · 获赞 0 · 访问量 2709

猜你喜欢

转载自blog.csdn.net/yjj350418592/article/details/105332481
今日推荐