生成輸出
要生成覆蓋資訊,應執行編譯的程式。在為測試套件建立程式碼覆蓋時,此執行步驟通常由測試套件執行,以便覆蓋範圍顯示測試執行的程式部分和不執行的程式。
$ a.out
執行該程式將導致在與目標檔案相同的目錄中生成 .gcda
檔案。
隨後,你可以使用程式的原始檔名作為引數呼叫 gcov,以生成具有每行執行頻率的程式碼列表。
$ gcov hello.c
File 'hello.c'
Lines executed:90.00% of 10
Creating 'hello.c.gcov'
結果包含在 .gcov
檔案中。這是一個示例:
-: 0:Source:hello.c
-: 0:Graph:hello.gcno
-: 0:Data:hello.gcda
-: 0:Runs:1
-: 0:Programs:1
-: 1:#include <stdio.h>
-: 2:
-: 3:int main (void)
1: 4:{
1: 5: int i;
-: 6:
1: 7: i = 0;
-: 8:
-: 9:
1: 10: if (i != 0)
#####: 11: printf ("Goodbye!\n");
-: 12: else
1: 13: printf ("Hello\n");
1: 14: return 0;
-: 15:}
在這裡,你可以看到行號和來源以及每行執行的次數。如果一行未執行,則標記為 #####
。
執行計數是累積的。如果在不刪除 .gcda 檔案的情況下再次執行示例程式,則執行源中每一行的次數的計數將新增到上一次執行的結果中。