gropf是gnu工具之一,在編譯的時候加入了profiling的source code,執行時統計user space的執行資料,可以得到每個function的被呼叫次數,執行時間,呼叫關係等。
以下是一個簡單範例
##Quick Start
先用gcc編譯程式
1 | gcc hello.c -o hello -pg -g |
-pg表示開啟profiling功能,如果要得到帶注視的程式碼清單,需加上-g。
執行程式
1 | ./hello |
此時會產生 gmon.out檔
使用gprof對程式進行分析
1 | gprof hello gmon.out -p |
得到每個函數所佔用的執行時間
1 | gprof hello gmon.out -q |
得到call graph,每個函數的呼叫關係,
1 | gprof hello gmon.out -A |
得到帶注釋的source code清單,列出每個函數的呼叫次數。