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