RVBacktrace
組件簡介
一個極簡的RISC-V棧回溯組件。
組件功能
在需要的地方調(diào)用組件提供的唯一API,開始當前環(huán)境的棧回溯
支持輸出addr2line需要的命令,使用addr2line進行?;厮?/p>
TODO List:
支持打印指定線程的?;厮菪畔?/p>
支持對接RT_ASSERT
支持輸出更多的符號信息
支持文件跳轉
添加組件
這個組件已經(jīng)制作成為rtthread軟件包,大家可以在軟件包市場找到。可以在env/RT-ThreadStudio中添加次軟件包進行使用。使用過程有任何疑問/反饋歡迎提ISSUE或者在群里討論。
使用示例
當前組件C的內(nèi)容極其簡單,同時對用戶僅提供單個API:void rvbacktrace(void),用戶在需要的地方調(diào)用該API就可以將當前的調(diào)用棧信息輸出,示例(下文演示為HPM6750):
1.在示例代碼適當位置調(diào)用rvbacktrace
2.運行代碼,終端輸出調(diào)用棧信息
3.?;厮菪畔⒅庇^化
可以看到的是當前shell輸出的信息沒有符號信息,不太直觀,當前組件提供了兩種方法:
使用addr2line工具
結合返匯編文件中的信息輸出調(diào)用棧符號。當然還有更好的想法,已經(jīng)在路上了.接下來詳細介紹這倆中方法的使用
3.1 addr2line工具
可以看到shell輸出的信息中包含addr2line需要的信息,我們將其拷貝,然后在當前rtthread.elf目錄下使用該工具,我的環(huán)境中在wsl有該工具,則使用該工具打開,打開后將之前復制的信息拷貝至終端執(zhí)行,輸出如下:
可以看到輸出的信息已經(jīng)很豐富了,在調(diào)試過程中還是很有幫助的。
3.2 結合反匯編圖形化
在RT-Studio配置輸出反匯編命令
在反匯編文件同級目錄下創(chuàng)建一個txt文本將shell輸出的信息拷貝至txt文本
rvbacktrace.txt中的內(nèi)容如下:
然后點擊工程目錄下的RVBacktrace.py
運行界面:
這里我們輸入rvbacktrace.txt與rtthread.asm的路徑,為了方便將它倆放在了同一目錄下,
復制它兩的路徑并輸入到上述終端中:
運行結果:
同時會自動生成html文件,以表格的形似輸出棧回溯信息,該文件在生成后自動打開。
上述是第一次運行,如果后續(xù)有其他的棧回溯信息,我們只需要將shell輸出的信息拷貝至之前創(chuàng)建的txt文本并保存,上述圖表就會自動更新,即在完成第一次操作后,后續(xù)只需要將shell輸出的新信息拷貝至txt文本即可。
如果需要修改txt文本的路徑或者反匯編的路徑,運行源碼下的clean.py后清除中間文件,重新按上述步驟執(zhí)行即可。
感覺不錯的小伙伴點個小星星叭,一起向RT-Thread/RISC-V奔跑!
-
軟件包
+關注
關注
0文章
104瀏覽量
11590 -
RISC-V
+關注
關注
45文章
2270瀏覽量
46127 -
RTThread
+關注
關注
8文章
132瀏覽量
40859
發(fā)布評論請先 登錄
相關推薦
評論