RVBacktrace
組件簡介
一個極簡的RISC-V棧回溯組件。
組件功能
在需要的地方調(diào)用組件提供的唯一API,開始當(dāng)前環(huán)境的棧回溯
支持輸出addr2line需要的命令,使用addr2line進(jìn)行棧回溯
支持結(jié)合反匯編,棧回溯信息圖表化
TODO List:
支持打印指定線程的棧回溯信息
支持對接RT_ASSERT
支持輸出更多的符號信息
支持文件跳轉(zhuǎn)
添加組件
這個組件已經(jīng)制作成為rtthread軟件包,大家可以在軟件包市場找到。可以在env/RT-ThreadStudio中添加次軟件包進(jìn)行使用。使用過程有任何疑問/反饋歡迎提ISSUE或者在群里討論。
使用示例
當(dāng)前組件C的內(nèi)容極其簡單,同時對用戶僅提供單個API:void rvbacktrace(void),用戶在需要的地方調(diào)用該API就可以將當(dāng)前的調(diào)用棧信息輸出,示例(下文演示為HPM6750):
1.在示例代碼適當(dāng)位置調(diào)用rvbacktrace
2.運(yùn)行代碼,終端輸出調(diào)用棧信息
3.棧回溯信息直觀化
可以看到的是當(dāng)前shell輸出的信息沒有符號信息,不太直觀,當(dāng)前組件提供了兩種方法:
使用addr2line工具
結(jié)合返匯編文件中的信息輸出調(diào)用棧符號。當(dāng)然還有更好的想法,已經(jīng)在路上了.接下來詳細(xì)介紹這倆中方法的使用
3.1 addr2line工具
可以看到shell輸出的信息中包含addr2line需要的信息,我們將其拷貝,然后在當(dāng)前rtthread.elf目錄下使用該工具,我的環(huán)境中在wsl有該工具,則使用該工具打開,打開后將之前復(fù)制的信息拷貝至終端執(zhí)行,輸出如下:
可以看到輸出的信息已經(jīng)很豐富了,在調(diào)試過程中還是很有幫助的。
3.2 結(jié)合反匯編圖形化
在RT-Studio配置輸出反匯編命令
在反匯編文件同級目錄下創(chuàng)建一個txt文本將shell輸出的信息拷貝至txt文本
rvbacktrace.txt中的內(nèi)容如下:
然后點(diǎn)擊工程目錄下的RVBacktrace.py
運(yùn)行界面:
這里我們輸入rvbacktrace.txt與rtthread.asm的路徑,為了方便將它倆放在了同一目錄下,
復(fù)制它兩的路徑并輸入到上述終端中:
運(yùn)行結(jié)果:
同時會自動生成html文件,以表格的形似輸出棧回溯信息,該文件在生成后自動打開。
上述是第一次運(yùn)行,如果后續(xù)有其他的棧回溯信息,我們只需要將shell輸出的信息拷貝至之前創(chuàng)建的txt文本并保存,上述圖表就會自動更新,即在完成第一次操作后,后續(xù)只需要將shell輸出的新信息拷貝至txt文本即可。
如果需要修改txt文本的路徑或者反匯編的路徑,運(yùn)行源碼下的clean.py后清除中間文件,重新按上述步驟執(zhí)行即可。
感覺不錯的小伙伴點(diǎn)個小星星叭,一起向RT-Thread/RISC-V奔跑!
-
軟件包
+關(guān)注
關(guān)注
0文章
108瀏覽量
11853 -
RISC-V
+關(guān)注
關(guān)注
46文章
2463瀏覽量
48098 -
RTThread
+關(guān)注
關(guān)注
8文章
132瀏覽量
41467
發(fā)布評論請先 登錄
什么是RISC-V
RISC-V Summit China 2024 | 青稞RISC-V+接口PHY,賦能RISC-V高效落地
什么是RISC-V? RISC-V指令具有哪些特點(diǎn)應(yīng)用?
risc-v是什么意思
FreeRTOS與RISC-V——適用于RISC-V的FreeRTOS概述
RISC-V 發(fā)展
開始了解RISC-V的好
RISC-V規(guī)范的演進(jìn) RISC-V何時爆發(fā)?
RISC-V學(xué)習(xí)筆記【1】RISC-V概述
openEuler加入RISC-V Landscape
RISC-V設(shè)計支持工具,支持RISC-V技術(shù)的基礎(chǔ)
湯谷智能發(fā)布全棧RISC-V硬件仿真加速系統(tǒng)方案

RISC-V Summit China 2024 青稞RISC-V+接口PHY,賦能RISC-V高效落地

加入全球 RISC-V Advocate 行列,共筑 RISC-V 的未來 !

評論