SEGGER Ozone是用于J-link和J-Trace的多平臺調試、分析工具。可加載IAR,Keil,Gcc,Clang/LLVM等工具鏈生成的Elf/Dwarf可執(zhí)行文件,進行C/C++源代碼調試和匯編指令調試。
Ozone調試器加載elf文件時,會自動查找elf文件中引用的源文件。但大多數編譯器會把源文件的路徑設置成絕對路徑,如果把項目移動到其他文件夾或是另一臺計算機再打開,調試時將無法找到源文件。本文將解析如何實現Ozone項目(.jdebug)可移植。
1解決方式
在Ozone中,使用項目向導新建項目時(Ozone調試器使用攻略),如果導入的elf文件和對應的源文件位于同一文件夾中,Ozone就會自動將該項目設置為可移植的。
如果不滿足這個條件,elf文件位置將被默認設置為絕對路徑,項目位置移動后,將無法立即使用Ozone對(.jdebug)項目進行調試,提示無法找到elf文件。可以通過編輯(.jdebug)文件中的Project.AddPathSubstitute()和File.Open()語句來解決這個問題。
(1). 在File.Open()中設置了elf文件的路徑,該函數支持相對路徑。修改這條語句為項目的相對路徑,以保證項目的可移植性。
(2). 在Project.AddPathSubstitute()中全部或部分替換elf文件中引用源文件的絕對路徑。你可以在View->Source Files下驗證路徑替換是否有效。如果沒有找到源文件,它旁邊會有一個警告小圖標。
1驗證
Ozone自動生成的項目可移植性可能無法滿足實際需求。SEGGER官網示例工程下載鏈接
解壓后,使用Ozone調試器打開Ozone文件夾中的項目文件Ozone_Project.jdebug, 提示無法找到 elf 文件。
要解決此問題,先關閉Ozone并使用文本編輯器打開Ozone_Project.jdebug文件,查找“File.Open”,你會看到這里有一條絕對路徑,它是創(chuàng)建項目原始主機的elf文件位置。
將這條絕對路徑修改為相對路徑File.Open(“../Output/Debug/Exe/ Ozone_Portable_Project_Example.elf”); 保存文件并使用Ozone打開。
Ozone提示找不到main.c文件,這是因為語句“Project.AddPathSubstitute”有問題。
修改為Project.AddPathSubstitute ("C:/ Users /Nino /Documents /SEGGER Embedded Studio for ARM Projects/Ozone_Portable_Project_Example","$(ProjectDir)/.."); 保存項目文件并再次使用Ozone打開。
可以看到在Ozone中正確顯示源文件。
通過修改*.jdebug的方式,可以非常容易的實現項目可移植。
審核編輯:湯梓紅
-
移植
+關注
關注
1文章
379瀏覽量
28124 -
C++
+關注
關注
22文章
2108瀏覽量
73620 -
源代碼
+關注
關注
96文章
2945瀏覽量
66730 -
編譯器
+關注
關注
1文章
1623瀏覽量
49108
原文標題:如何實現Ozone項目可移植?
文章出處:【微信號:麥克泰技術,微信公眾號:麥克泰技術】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論