0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在应用程序调试期间分析栈和堆使用情况

XILINX开发者社区 来源:XILINX开发者社区 2025-10-24 16:54 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文作者:AMD 工程师 Kevin Morris

随着 AMD Vitis 统一软件平台 2021.2 的发布,Vitis 引入了一个 Tcl 脚本,用于在应用程序运行的特定时间点协助查找栈和堆的内存使用情况。该脚本已延续到后续的 Vitis 版本,并在 Unified IDE 中仍可使用。本文涵盖了如何在 Vitis 中使用分析工具在应用程序调试期间对栈和堆进行监控。

以下提供了使用此脚本在调试期间实时收集栈和堆的使用情况的指示信息。

要求:

当前在硬件上正在运行的应用程序

已打开 Vitis 终端或 GUI(XSCT/XSDB 控制台),并且可通过它来访问正在运行硬件

步骤:

运行应用程序调试,直至第一个断点(通常为 Main 函数)为止。

在 XSCT/XSDB 终端中,使用 Source 命令运行安装路径下的内存脚本:

42e89f3a-ae6e-11f0-8c8f-92fbcf53809c.png

以下是可使用的命令:

4343ab64-ae6e-11f0-8c8f-92fbcf53809c.png

利用您的 .elf 文件运行初始化。这样会返回栈和堆的地址位置及其大小:

439fddd0-ae6e-11f0-8c8f-92fbcf53809c.png

注释:您可以使用 GUI 右键单击自己的 ELF 文件、选择“Copy Path”(复制路径),然后将其粘贴到终端中以获取完整路径。

如果愿意,您现在即可运行“mem analyze”,这样即可看到在应用程序启动时使用率为零 (0%):

43f9964a-ae6e-11f0-8c8f-92fbcf53809c.png

运行您的应用程序直至断点,或者步进调试。为了获得最准确的结果,请在应用程序中运行一段覆盖大多数情况的序列。然后,运行以下命令:

445132b0-ae6e-11f0-8c8f-92fbcf53809c.png

这样会读出应用程序中当前栈和堆的大小(字节数)和使用量(字节数)以及使用率(百分比):

44a7a3ca-ae6e-11f0-8c8f-92fbcf53809c.png

这有助于判断您的应用程序是否已根据您的需求使用了适当的内存量。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • amd
    amd
    +关注

    关注

    25

    文章

    5649

    浏览量

    139049
  • 内存
    +关注

    关注

    9

    文章

    3173

    浏览量

    76121
  • 应用程序
    +关注

    关注

    38

    文章

    3342

    浏览量

    59935
  • Vitis
    +关注

    关注

    0

    文章

    154

    浏览量

    8265

原文标题:开发者分享|AMD Vitis™ 统一软件平台调试 - 在应用程序调试期间分析栈和堆使用情况

文章出处:【微信号:gh_2d1c7e2d540e,微信公众号:XILINX开发者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何知道嵌入式电子控制单元 (ECU) 中的RAM使用情况

    我知道嵌入式软件构建工具会报告程序闪存使用情况。我认为他们也报告 RAM 使用率,但他们是否报告最大 RAM 使用率? 生成工具可能不知道在运行时将使用多少。是否有构建工具不知道的其他 RAM
    发表于 01-22 07:02

    请问如何在Keil开发环境中查看代码大小和SRAM使用情况

    何在Keil开发环境中查看代码大小和SRAM使用情况
    发表于 08-20 06:38

    何在运行时检查堆栈和使用情况

    可以在user.ld文件中更改堆栈大小。但是如何在运行时检查堆栈和使用情况?任何建议都会有所帮助。问候THOMAS。 #spc560#stack-overflow以上来自于谷歌翻译以下为原文
    发表于 01-25 14:16

    如何查看RAM使用情况

    嗨, 我正在使用STM32L053 Nucleo,我已经为它运行了一些代码,我希望做一个RAM估计来查看当前固件的RAM使用情况。如何查看RAM使用情况? 问候#记忆
    发表于 08-05 10:08

    请问如何在Keil开发环境中查看代码大小和SRAM使用情况

    何在Keil开发环境中查看代码大小和SRAM使用情况
    发表于 12-02 06:21

    STM32H7的FLASH,RAM和使用情况

    第10章 STM32H7的FLASH,RAM和使用情况(map和htm文件)本章为大家介绍编译器生成的map和htm文件进行解析,通过这两个文件可以让大家对工程代码的认识程度提升一个档次。10.1 初学者重要提示10...
    发表于 08-03 06:18

    如何使用Battery Historian分析电源使用情况

    前言本文翻译自“为电池寿命做优化”系列文档中的其中一篇,用于介绍如何使用Battery Historian分析电源使用情况。中国版官网原文地址为:https
    发表于 12-29 06:54

    LPC11U68如何在我的代码中计算闪存的使用情况

    。 LPC11U68 也一样吗?如果不是,我如何在我的代码中计算闪存的使用情况?我知道我的闪存的基址是:0x0002 0000
    发表于 03-17 08:40

    如何检查imx6中的GPU使用情况

    - - - 可用 GPU 空闲时间:45.942692 毫秒 在这里,随着我们使用更多 Qt6 应用程序,我得到的 Contiguous 值越来越大。这是确认 GPU 使用情况的正确方法吗? 请简要说明 GPU 使用情况
    发表于 05-22 07:04

    如何才能知道5.10.72的Vivante_vdk测试Qt应用程序GPU使用情况

    大家好。 我正在使用内核 BSP 5.10.72,所以我想使用此版本的 gpu_vprofiler 来获取兼容的 openGL 和 EGL 库。 请帮助我获取此版本 5.10.72 的 Vivante_vdk 以测试 Qt 应用程序 GPU 使用情况
    发表于 05-31 06:03

    KAN316如何确定应用程序的堆栈使用情况

    大小问题可能会产生不常见的零星程序错误。 因此,了解应用程序的堆栈内存要求至关重要。 为了计算(并因此优化)所需的堆栈存储器大小,可以使用以下方法: ·静态分析(使用调用树分析)在构建
    发表于 08-28 07:27

    大化肥用离心压缩机组的使用情况分析及其近期发展趋势

    大化肥用离心压缩机组的使用情况分析及其近期发展趋势
    发表于 05-25 15:12 15次下载

    主流GPS芯片使用情况

    主流GPS芯片使用情况
    发表于 11-27 14:34 13次下载

    浅谈如何评估TI C2000系列微控制器程序的堆栈使用情况

    浅谈如何评估TI C2000系列微控制器程序的堆栈使用情况
    发表于 10-31 08:23 1次下载
    浅谈如何评估TI C2000系列微控制器<b class='flag-5'>程序</b>的堆栈<b class='flag-5'>使用情况</b>

    如何使用SystemView的监控功能

    SystemView能够监视应用程序如何使用动态存储。这意味着,如果应用程序中使用了C或C++、自定义或RTOS提供的内存池对象,我们可以跟踪这些对象的
    的头像 发表于 08-09 18:07 1756次阅读
    如何使用SystemView的<b class='flag-5'>堆</b>监控功能