2012-03-01 50 views
1

我在嘗試配置我的程序時遇到問題。在生成文件中使用gprof

我seperately編譯每個函數是這樣的:

function1.o:  function1.cpp 
    g++ -g -pg -z -c function1.cpp 

然後我的一切聯繫在一起是這樣的:

exec: function1.o function2.o function3.o main.o 
    g++ -g -pg -z -c -o exec function1.o function2.o function3.o main.o 

但是,當我與./exec運行該程序,然後用gprof exec配置文件中的數據,我沒有分析數據,它這樣說:

granularity: each sample hit covers 4 byte(s) no time accumulated 

我做錯了什麼?

+1

你有沒有考慮過使用valgrind-callgrind和kcachegrind呢?我有一個類似的問題,無法使用gprof獲得CMAKE,最終使用callgrind。 kcachegrind可視化是有幫助的。 – 2012-03-01 17:51:31

+0

爲什麼你認爲這個問題與使用'make'有關?如果不使用'make'手動編譯,您是否看不到問題? – eriktous 2012-03-02 12:44:59

回答

0

很可能您的程序運行時間不足以讓gprof收集任何樣本。

您可以通過多次執行主循環來任意增加運行時間。

如果您在Linux上運行,請允許我也推薦perf這是一個非常好的分析工具。

相關問題