原創|使用教程|編輯:張莉|2025-11-04 13:45:49.607|閱讀 16 次
概述:在嵌入式軟件測試領域,對交叉編譯代碼進行單元測試是一大挑戰。Parasoft C/C++test作為專業的C/C++測試工具,能夠與勞特巴赫Trace32調試器深度集成。下面會詳細介紹如何在C++test中配置Trace32調試器,實現對PowerPC架構程序的單元測試,涵蓋環境設置、項目導入到測試執行的全過程。
#慧都22周年慶大促·界面/圖表報表/文檔/IDE/IOT/測試等千款熱門軟控件火熱促銷中>>
在嵌入式軟件測試領域,對交叉編譯代碼進行單元測試是一大挑戰。Parasoft C/C++test作為專業的C/C++測試工具,能夠與勞特巴赫Trace32調試器深度集成。下面會詳細介紹如何在C++test中配置Trace32調試器,實現對PowerPC架構程序的單元測試,涵蓋環境設置、項目導入到測試執行的全過程。
說明
C++test支持勞特巴赫的Trace32調試器執行單元測試,通常情況下Lauterbach是一個通用的嵌入式調試工具,支持Simulator和Emulator兩種模式,也就是說可以在仿真器上執行和直接在目標板上執行。這里我們以在Simulator上執行為例在說明如何配置C++test。
因為其為通用調試工具,所以可以調試通過多種編譯器生成的可執行文件,例如通過Wind River Diab Compiler 5.9.3來構建的程序。
前提
首先程序能夠本身編譯鏈接生成可執行文件(.elf)文件。然后可以本身在Trace32中單步執行調試。
環境配置
在啟動C++test之前首先運行編譯器的環境設置batch腳本,C:\WindRiver\env.bat

call env.bat cpptest
BDF創建
啟動以后,導入被測項目,本例的項目是非IDE構建的,所以首先得創建用于導入的bdf文件。然后再通過bdf文件導入項目。
生成測試用例
單元測試用例生成使用默認的測試配置Generate Unit Tests即可。
定制測試配置
在執行單元測試的時候則需要根據調試器的情況做如下配置。首先明確使用的Trace32的調試器是Trace32 Simulator for PPC(PowerPC)
右鍵此快捷方式,選擇屬性打開屬性對話框。
在此屬性對話框中有兩個參數,一個是啟動的trace32的程序名,另外一個是配置文件名。
C:\T32\bin\windows\t32mppc.exe -c C:\T32\configsim.t32
通過這兩個參數設置C++test執行單元測試的測試配置。這里選擇內建的針對勞特巴赫trace32的測試配置。
右鍵選擇該測試配置然后復制一份到用戶自定義中進行修改,
這里需要修改的在上圖紅框內標記出來了。
Core(System.CPU value) 設置程序運行的芯片內核型號。
Test executable exit point 設置程序執行結束的退出函數名。這里默認不修改即可,如果在執行單元測試的過程中出錯說沒有這個函數名稱,可以在項目中添加一個如下的簡單函數
Path to TRACE32 executable => trace32可執行文件的路徑,即剛才對應的兩個選項的第一個。
T32 config file(default empty)=> 針對不同系列的配置文件,即剛才對應選項的第二個。
修改后的測試配置如下。
執行單元測試
以上操作即完成了所有的配置,直接可以對測試用例進行執行。
通過在“Run Tests using TRACE32 (FDX)”測試配置中的設置,自動調用TRACE32調試器執行這個測試用例。
更多配置
對于某些項目是原本執行在Emulator上的,即執行在真實板子上的程序,如果想在模擬器simulator上執行單元測試,本身可能需要修改源代碼,也有可能暫時不需要也可以執行,前提條件是本身程序可以在模擬器上執行,從勞特巴赫廠商出了解到,這里我們需要做一些額外的調整和配置,程序就可以執行在模擬器上。在執行之前設置禁用 VLE指令模式。
SYStem.Option.DisMode VLE
通過這個指令可以看到程序本身可以執行到模擬器上,這樣我們需要在C++test中也添加此控制命令。修改C++test針對trace 32的控制腳本模板。位于:
C:\Program Files\Parasoft\C++test\9.6\engine\etc\templates\for_recipes\t32_fdx.tja
在系統Up之前添加這條命令,模板改之前為
;=========================================== ; initialize and start the debugger screen.always RESET SYStEM.CPU $CORE$ SYStEM.Up
改之后為:
;=========================================== ; initialize and start the debugger screen.always RESET SYStEM.CPU $CORE$ SYStem.Option.DisMode VLE SYStEM.Up
改完后執行C++test可以看到C++test是能夠執行,但是某些時候可能執行不能停止,當我們手動的停止后,能夠得到測試結果和覆蓋率,仔細檢查控制模板,發現在執行的時候調試器會等待程序結束。對于某些不能結束的程序,我們需要手動強制其在具體時間內結束。所以需要在改一下控制腳本,改之前為:
;=========================================== ; Run tests GO $if DEBUG != "true":\$ WAIT !run()
改之后為:
;=========================================== ; Run tests GO $if DEBUG != "true":\$ WAIT !STATE.RUN() 5.S IF STATE.RUN() ( Break.direct )
這樣調整后程序就能自動執行得到覆蓋率和結果。
Parasoft C/C++test與Trace32調試器的集成配置,實現了在仿真環境中的自動化單元測試。通過這一解決方案,開發人員能夠在開發早期發現代碼缺陷,有效提升嵌入式軟件質量。除了單元測試,C++test還提供靜態分析、代碼規范檢查等全方位質量保障,幫助團隊構建可靠的嵌入式軟件產品。
關于慧都
慧都科技(EVGET)成?于2003年,是?家?業數字化解決?案公司,?期專注于軟件、油?與制造?業。公司基于深?的業務理解與管理洞察,以系統化的業務建模驅動技術落地,幫助企業實現智能化運營與?期競爭優勢。
慧都科技作為Parasoft公司在中國區的官方授權合作伙伴,為國內企業提供Parasoft C/C++test產品的正版授權、定制化部署與全生命周期技術支持與服務。我們致力于助力客戶精準貫徹功能安全標準、全面提升軟件開發效率、有效管控項目風險,最終構建符合國際標準的高質量軟件體系。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@ke049m.cn