当前位置: 首页 > news >正文

【ARM】如何通过ARMDS的Map文件查看堆栈调用情况

1、 文档目标

通过ARMDS生成的Map文件,查看工程的堆栈使用情况。

2、 问题场景

在对于工程进行调试和测试的时候,工程师通常需要了解目前工程的堆栈使用情况,是否有函数或者变量占用了过多的堆栈空间。或者在对于一些错误进行排查的时候也需要查看堆栈的使用情况。除了可以查看callgraph文件外,也可以通过Map文件进行查看。

3、软硬件环境

1)、软件版本:ARM DS 2023.0

2)、电脑环境:Windows 11

3)、外设硬件:无

4、解决方法

1)、ARMDS要生成Map文件需要在Properties窗口中,C/C++ Build->Setting->Arm Linker 6->Additional Information配置中,勾选Generate image map(--map)。并且在最下面的Redirect diagnostics output to file(--list)后面的输入框中输入map文件的文件名(如图4-1)。

如果需要查看全局变量的堆栈使用情况,需要勾选上List stack usage of global symbols这个选项。

图4-1

2)、重新构建工程后,就可以在工程目录下面看到map文件的生成了。(如图4-2)

图4-2

3)、在Map文件的Image Stack Usage Information.部分就可以看全局变量的堆栈情况了(如图4-3)

Maximum stack usage for Image.(Image部分的最大堆栈使用量)Maximum Stack Usage for svcRtxKernelStart 0xe8 bytes.(svcRtxKernelStart的最大堆栈使用率0xe8字节)
Call chain for maximum stack usage(最大堆栈使用的调用链:):
svcRtxKernelStart => osRtxThreadStartup => svcRtxThreadNew => osRtxMemoryAlloc => MemBlockPtr(最大调用链)........Maximum Stack Usage for LED_Initialize 0x70 bytes.(LED_Initialize的最大堆栈使用率为0x70字节。)
Call chain for maximum stack usage(最大堆栈使用的调用链):
LED_Initialize => HAL_GPIO_Init(最大调用链)

图4-3

———————————————————————

​ 版权声明:本文为亿道电子科技有限公司原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。


文章转载自:
http://caribou.gbfuy28.cn
http://brewis.gbfuy28.cn
http://archeology.gbfuy28.cn
http://boa.gbfuy28.cn
http://bigarreau.gbfuy28.cn
http://autoist.gbfuy28.cn
http://autolysate.gbfuy28.cn
http://autogyro.gbfuy28.cn
http://casper.gbfuy28.cn
http://argentina.gbfuy28.cn
http://abscind.gbfuy28.cn
http://balk.gbfuy28.cn
http://ceskoslovensko.gbfuy28.cn
http://behold.gbfuy28.cn
http://amplitude.gbfuy28.cn
http://braille.gbfuy28.cn
http://aspherical.gbfuy28.cn
http://arsonite.gbfuy28.cn
http://boson.gbfuy28.cn
http://agname.gbfuy28.cn
http://antewar.gbfuy28.cn
http://autolyzate.gbfuy28.cn
http://again.gbfuy28.cn
http://cafe.gbfuy28.cn
http://bergsonian.gbfuy28.cn
http://athene.gbfuy28.cn
http://carcinoma.gbfuy28.cn
http://cecum.gbfuy28.cn
http://carpogenic.gbfuy28.cn
http://beefy.gbfuy28.cn
http://www.dtcms.com/a/216032.html

相关文章:

  • U-Boot ARMv8 平台异常处理机制解析
  • 力扣经典算法篇-13-接雨水(较难,动态规划,加法转减法优化,双指针法)
  • PID - 模拟
  • 3D草图绘制管道
  • 从零搭建上门做饭平台:高并发订单系统设计
  • Deep Evidential Regression
  • doucker 挂载卷
  • 零基础设计模式——结构型模式 - 装饰器模式
  • ubuntu 制作 ssl 证书
  • 通过ansible playbook创建azure 资源
  • 电子邮箱设置SSL:构建邮件传输的加密护城河
  • 解决Qt 打包的软件缺少dll问题
  • UDP 传输时间(延迟)
  • 记录:训练过程中可训练参数出现nan和inf造成loss为nan
  • 2025年6月亲测可用 | 剪映免SVIP版本 | 支持数字人
  • 8.安卓逆向2-frida hook技术-frida环境安装
  • 利用亮数据实现大规模数据自动抓取
  • 如何验证 AXI5 原子操作
  • Linux 进阶命令篇
  • (自用)Java学习-5.19(地址管理,三级联动,预支付)
  • WSL连接网络
  • 【观成科技】Ymir勒索软件组织窃密木马RustyStealer加密通信分析
  • 联软科技统一安全工作空间:零信任架构下的远程办公数据安全守护者
  • 塔能科技:有哪些国内工业节能标杆案例?
  • vue3基本类型和对象类型的响应式数据
  • [Vue组件]比例环形编辑
  • 【前端】【Vue3】vue3性能优化总结
  • 关于Oracle LATCH:LIBRARY CACHE
  • 【Vue Vapor Mode :技术突破与性能优化的可能性】
  • 《棒球特长生》棒球升学途径·棒球1号位