pcap文件是什么(pcap文件怎么看)

pcap文件是什么(pcap文件怎么看)什么是 map 文件 简单的说 map 文件是通过编译器编译之后 集程序 数据及 IO 空间的一种映射文件 很多技术牛逼的工程师在遇到内存越界 或溢出的情况 首先想到的就是分析 map 文件 通过 map 文件可以知道函数大小 入口地址等一些重要信息 我们在 Keil 中最常见的就是在编译之后 编译窗口会显示类似如下一段关于程序和数据大小的信息 Program Size Code



什么是map文件?
简单的说:map文件是通过编译器编译之后,集程序、数据及IO空间的一种映射文件。
很多技术牛逼的工程师在遇到内存越界,或溢出的情况,首先想到的就是分析map文件。通过map文件可以知道函数大小,入口地址等一些重要信息。

我们在Keil中最常见的就是在编译之后,编译窗口会显示类似如下一段关于程序和数据大小的信息:
Program Size: Code=1112 RO-data=320 RW-data=0 ZI-data=1632

map文件内容分类
从上面输出配置可以看得出来map文件大概包含了哪些信息。map文件将其分为如下五大类:
1.Section Cross References:模块、段(入口)交叉引用

2.Removing Unused input sections from the image:移除未调用模块

3.Image Symbol Table:映射符号表

4.Memory Map of the image:内存(映射)分布

5.Image component sizes:存储组成大小

Section Cross References:模块、段(入口)交叉引用

这里仍然以main函数来说明    main.o(i.main) refers to delay.o(i.Delay_ms) for Delay_ms

 意思是main.o中的main模块引用了delay.o中的Delay_ms模块

Removing Unused input sections from the image:移除未调用模块

 

这个就是移除掉没有使用到的东西,比如我们为了方便,会把所有的库函数都加入到工程中,但可能有的库函数模块没有使用掉,对这部分进行移除,最后是一段总结性的文字,总计501未调用的模块共21820字节从映像文件中移除

Image Symbol Table:映射符号表,也就是各个段所存储对应地址的表(图片删除了中间部分内容)。

5.1 Symbol分为两大类

1.Local Symbols:局部

2.Global Symbols:全局

5.2 Symbol内容要点

1.Symbol Name:符号名称

名称命名及分类请看最后给出的官方参考文档。

2.Value:存储对应的地址

大家会发现有0x0800xxxx、0x2000xxxx这样的地址。

0x0800xxxx指存储在FLASH里面的代码、变量等。

0x2000xxxx指存储在内存RAM中的变量Data等。

3.Ov Type:符号对应的类型

符号类型大概有几种:Number、Section、Thumb Code、Data等;

细心的朋友会发现:全局、静态变量等位于0x2000xxxx的内存RAM中。

4.Size:存储大小

这个容易理解,就是当前行Symbol占用大小。

5.Object(Section):段目标

这里一般指所在模块(源文件)。

Memory Map of the image:内存(映射)分布

Image Entry point : 0x08000131:指映射入口地址。

Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00000598, Max: 0x00080000, ABSOLUTE):

指加载区域位于LR_IROM1开始地址0x08000000,大小有0x00000598,这块区域最大为0x00080000.

执行区域:

A.Execution Region ER_IROM1

B.Execution Region RW_IRAM1

这个区域,其实就是对应我们在keil的目标配置中的区域,

1.Base Addr:存储地址

0x0800xxxxFLASH地址和0x2000xxxx内存RAM地址。

2.Size:存储大小

3.Type:类型

Data:数据类型

Code:代码类型

Zero:未初始化变量类型

PAD:这个类型在map文件中放在这个位置,其实它不能算这里的类型。要翻译的话,只能说的“补充类型”。

ARM处理器是32位的,如果定义一个8位或者16位变量就会剩余一部分,这里就是指的“补充”的那部分,会发现后面的其他几个选项都没有对应的值。

4.Attr:属性

RO:存储与ROM中的段

RW:存储与RAM中的段

5.Section Name:段名

这里也可以说为入口分类名,与第一章节“Section Cross References”指的模块、段一样。

大概包含:RESET、.ARM、 .text、 i、 .data、 .bss、 HEAP、 STACK等。

6.Object:目标

 

参考文章

嵌入式Map文件解析_嵌入式生成的map文件有哪些关键信息-CSDN博客 

STM32 | map文件详解_简述代码编译后生成的map文件里面的内容-CSDN博客 

 

编程小号
上一篇 2025-02-13 22:57
下一篇 2025-01-26 14:11

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ri-ji/38584.html