1、 文檔目標
通過Arm DS的設置項生成對應的文件,便于查看工程各個函數(shù)的堆棧的占用情況。
2、 問題場景
在對于工程進行調(diào)試和測試的時候,工程師通常需要了解目前工程的堆棧使用情況,是否有函數(shù)或者變量占用了過多的堆??臻g?;蛘咴趯τ谝恍╁e誤進行排查的時候也需要查看堆棧的使用情況。
3、軟硬件環(huán)境
1)、軟件版本:Arm DS 2023.0
2)、電腦環(huán)境:Windows 11
3)、外設硬件:無
4、解決方法
1)、可以通過對應工程的Properties窗口中,C/C++ Build->Setting->Arm Linker 6->Additional Information配置中,有一個Generate call graph(--callgraph)的選項(如圖4-1)。這個選項可以生成記錄工程函數(shù)的調(diào)用關系的文件。

圖4-1
2)、設置好后,重新對于工程進行構建后就可以在工程管理窗口中下看生成的TXT文件。(如圖4-2)

圖4-2
3)、在生成的文件中,可以看到在工程中使用的LED_Initialize函數(shù)的調(diào)用情況和堆棧情況(如圖4-3)。
LED_Initialize (Thumb(使用的指令集), 160 bytes(函數(shù)的大?。? Stack size 48 bytes(堆棧的大小), LED_769I_EVAL.o(.text.LED_Initialize)(函數(shù)所在的源文件))
[Stack]
Max Depth = 112(最大堆棧深度) Call Chain = LED_Initialize => HAL_GPIO_Init(函數(shù)的調(diào)用關系)
[Calls](該函數(shù)調(diào)用了什么函數(shù))
HAL_GPIO_WritePin
HAL_GPIO_Init
[Called By](哪個函數(shù)調(diào)用了這個函數(shù))
main

圖4-3
4)、Additional Information配置中還有兩個選項(如圖4-4)。
(1)、Callgraph file(--callgraph_file):指定生成的文件的文件名,不設置的情況下,默認使用工程名字。
(2)、Callgraph format (--callgraph_output):控制生成文件的類型,這里有HTML和TEXT兩種選項。根據(jù)需求選擇即可。

圖4-4

首頁 > 資源中心 > FAQ
