SEGGER Ozone是用于J-link和J-Trace的多平臺(tái)調(diào)試、分析工具??杉虞dIAR,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ī)再打開(kāi),調(diào)試時(shí)將無(wú)法找到源文件。本文將解析如何實(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)后,將無(wú)法立即使用Ozone對(duì)(.jdebug)項(xiàng)目進(jìn)行調(diào)試,提示無(wú)法找到elf文件。可以通過(guò)編輯(.jdebug)文件中的Project.AddPathSubstitute()和File.Open()語(yǔ)句來(lái)解決這個(gè)問(wèn)題。
(1). 在File.Open()中設(shè)置了elf文件的路徑,該函數(shù)支持相對(duì)路徑。修改這條語(yǔ)句為項(xiàng)目的相對(duì)路徑,以保證項(xiàng)目的可移植性。
(2). 在Project.AddPathSubstitute()中全部或部分替換elf文件中引用源文件的絕對(duì)路徑。你可以在View->Source Files下驗(yàn)證路徑替換是否有效。如果沒(méi)有找到源文件,它旁邊會(huì)有一個(gè)警告小圖標(biāo)。
1驗(yàn)證
Ozone自動(dòng)生成的項(xiàng)目可移植性可能無(wú)法滿足實(shí)際需求。SEGGER官網(wǎng)示例工程下載鏈接
解壓后,使用Ozone調(diào)試器打開(kāi)Ozone文件夾中的項(xiàng)目文件Ozone_Project.jdebug, 提示無(wú)法找到 elf 文件。
要解決此問(wèn)題,先關(guān)閉Ozone并使用文本編輯器打開(kāi)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打開(kāi)。
Ozone提示找不到main.c文件,這是因?yàn)檎Z(yǔ)句“Project.AddPathSubstitute”有問(wèn)題。
修改為Project.AddPathSubstitute ("C:/ Users /Nino /Documents /SEGGER Embedded Studio for ARM Projects/Ozone_Portable_Project_Example","$(ProjectDir)/.."); 保存項(xiàng)目文件并再次使用Ozone打開(kāi)。
可以看到在Ozone中正確顯示源文件。
通過(guò)修改*.jdebug的方式,可以非常容易的實(shí)現(xiàn)項(xiàng)目可移植。
審核編輯:湯梓紅
-
移植
+關(guān)注
關(guān)注
1文章
375瀏覽量
28012 -
C++
+關(guān)注
關(guān)注
21文章
2085瀏覽量
73301 -
源代碼
+關(guān)注
關(guān)注
96文章
2942瀏覽量
66444 -
編譯器
+關(guān)注
關(guān)注
1文章
1602瀏覽量
48895
原文標(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)論