本文作者:AMD 工程师 Kevin Morris
随着 AMD Vitis™ 统一软件平台 2021.2 的发布,Vitis 引入了一个 Tcl 脚本,用于在应用程序运行的特定时间点协助查找栈和堆的内存使用情况。该脚本已延续到后续的 Vitis 版本,并在 Unified IDE 中仍可使用。本文涵盖了如何在 Vitis 中使用分析工具在应用程序调试期间对栈和堆进行监控。
以下提供了使用此脚本在调试期间实时收集栈和堆的使用情况的指示信息。
要求:
当前在硬件上正在运行的应用程序
已打开 Vitis 终端或 GUI(XSCT/XSDB 控制台),并且可通过它来访问正在运行硬件
步骤:
运行应用程序调试,直至第一个断点(通常为 Main 函数)为止。
在 XSCT/XSDB 终端中,使用 Source 命令运行安装路径下的内存脚本:

以下是可使用的命令:

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

注释:您可以使用 GUI 右键单击自己的 ELF 文件、选择“Copy Path”(复制路径),然后将其粘贴到终端中以获取完整路径。
如果愿意,您现在即可运行“mem analyze”,这样即可看到在应用程序启动时使用率为零 (0%):

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

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

这有助于判断您的应用程序是否已根据您的需求使用了适当的内存量。
文章来源:Xilinx开发者社区