程序代碼覆蓋率分析主要分爲以下幾步:
- 右擊需要分析的工程,選擇菜單
“Properties”
,選擇“SylixOS Project”
下的“Compiler Setting”
,在彈出的窗口中勾選“Enable gcov(Code coverage analysis)”
,“OK”
保存設置。
- 編譯程序,在工程編譯輸出目錄的 obj 文件夾下會爲被編譯的每個源文件生成
“源文件名.o”
和“源文件名.gcno”
文件。
- 上傳應用程序可執行文件(本例爲
“app_demo”
)到目標設備並執行文件,程序退出後
在可執行文件同級目錄下會生成obj
目錄,該目錄中保存了每個源文件在程序執行後生成的
“源文件名.gcda”
文件。
- 右擊需要分析的工程,選擇
“SylixOS Coverage Analysis→Show Coverage Rate”
。
至此,每個源文件在程序工程編譯輸出目錄下的obj
文件夾中存在三個與之對應的文件,即:
“源文件名.o”
,“源文件名.gcno”
和“源文件名.gcda”
。在gcov
標籤頁中可查看源文件代碼
覆蓋率,雙擊列表中的行可定位到源代碼,同時在源碼文件中以不同的顏色標識各行代碼的
執行次數。選中列表中的“app_demo.c”
一行,點擊 ,選擇“Bar graph”
,可以更直觀的
查看代碼覆蓋率分析圖。
注:如果更改了源文件,在第四步中需要先選擇“SylixOS Coverage Analysis→Get Coverage Rate File”
,再選擇“SylixOS Coverage Analysis→Show Coverage Rate”
內核模塊代碼覆蓋率分析與應用程序基本一致,不一樣的是內核模塊不能被執行,需運
行“modulegcov”
命令生成“源文件名.gcda”
文件。其操作流程如下:
- 模塊中添加如下代碼。
extern void __gcov_flush();
LW_SYMBOL_EXPORT void module_gcov (void)
{
__gcov_flush();
printk("module_gcov() run!\n");
}
- 按照圖 7.2 設置工程,編譯並下載內核模塊文件到目標系統,註冊模塊並執行
“modulegcov”
命令,生成“源文件名.gcda”
文件。
- 右擊需要分析的工程,選擇
“SylixOS Coverage Analysis→Show Coverage Rate”
。至此,
每個源文件會在程序工程編譯輸出目錄下的obj
文件夾中都存在三個與之對應的文件,即:
“源文件名.o”
,“源文件名.gcno”
和“源文件名.gcda”
。選擇過工程目標文件後即可查看代
碼覆蓋率分析結果。在gcov
標籤頁中可查看源文件代碼覆蓋率,雙擊列表中的行
可定位到源代碼,同時在源碼文件中以不同的顏色標識各行代碼的執行次數。選中某一行,
點擊 ,選擇“Bar graph”
,可以更直觀的查看代碼覆蓋率分析圖。