GCC高級測試功能擴展——程序性能測試工具gprof、程序覆蓋測試工具gcov

gprof是GNU組織下的一個比較有用的性能測試功能:函數

  主要功能:   找出應用程序中消耗CPU時間最多的函數;工具

        產生程序運行時的函數調用關係、調用次數性能

  基本原理:   首先用戶要使用gprof工具,必須在GCC編譯該文件的選項中添加-pg選項,而後GCC會在用戶應用程序的每個函數中加入一個名爲mcount(或者是_mcount、__mcount,這依賴於編譯器或操做系統)的函數,即應用程序中每個函數都要調用mcount函數,而mcount函數使用後會在內存中保存函數調用圖,並經過函數調用堆棧的形式查找子函數和父函數的地址,這張調用圖也保存了全部與函數調用相關的調用時間、調用次數等信息。當應用程序執行完畢,會在當前目錄下產生gmon.out文件,gprof工具正是經過分析gmon.out文件才得出統計資料的。測試

  使用gprof工具的主要格式:優化

    gprof  [選項]  用戶應用程序  gmon.outspa

  gprof命令選項:操作系統

    -b  再也不輸出統計表格中的詳細信息,僅顯示簡要信息內存

    -p  只輸出函數的調用圖編譯器

    -i   輸出該統計總結信息編譯

    -T  以傳統的BSD格式打印輸出信息

    -q  僅輸出函數的時間消耗列表

    -w width  設置輸出的寬度

    -e Name  不輸出函數Name以及其子函數的調用圖

    -f Name  輸出函數Name及其子函數的調用圖

    -z  顯示從未使用過的函數信息

    -D  忽略函數中未知的變量

  gprof輸出信息列表項解釋:

    name  函數名稱

    %time  函數使用佔所有時間的百分比

    cumulative seconds  函數累計執行的時間

    self seconds  函數自己執行的時間

    calls  函數被調用的次數

    self call  每次調用,花費在函數上的時間

    total call  每一次調用,花費在函數及其子函數的平均時間

  使用gprof的步驟(假設要分析程序爲test.c的性能、函數調用狀況及函數調用時間):

    (1)#gcc  -pg  -o  test  test.c

    (2)#./test

    (3)#gprof  -b  test  gmon.out

   

程序覆蓋測試工具gcov:

  gcov是GNU組織旗下的一個程序覆蓋測試工具。

  主要功能:  程序中哪部分代碼沒有執行?

        哪部分代碼執行效率最高?

        哪部分代碼佔用CPU時間最長?

        哪部分代碼消耗時間最短?

  使用建議:  使用gcov進行程序覆蓋性測試時,建議用戶不要在gcc編譯程序的命令中添加對代碼的優化。

        同gprof同樣,gcov工具只能與GCC協同工做,而不能同其餘的軟件配套使用

  使用步驟:(1)在GCC編譯時必須添加 -fprofile-arcs  -ftest-coverage 選項

       (2)執行編譯的可執行文件

       (3)使用gcov命令分析代碼運行的效率

  gcov執行 格式:

    gcov  [選項]  用戶程序

  gcov命令選項:

    -b  表示顯示對分支的測試信息

    -h  顯示gcov的幫助信息

    -v  顯示gcov的版本信息

    -n  不建立gcov的輸出信息

    -f  輸出每一個函數的使用信息

相關文章
相關標籤/搜索