2014-09-04 26 views
1

我想分析我的代碼,但我想要一個函數不算。如何從gprof中排除某個函數?

我編譯如下:

,然後我作爲運行:

./eg Datasets/Klein_nb_P1000_dim10000.txt 16 5 3 1 
gprof -Q ./eg > Klein_nb_P1000_dim10000_cpu_rot1.txt 

我要排除的功能有此簽名。

void readDivisionSpace(Division_Euclidean_space& ds, char* filename);

我怎樣才能做到這一點?

回答

1

爲了排除平面輪廓功能,你需要使用-P選項:

gprof eg gmon.out -P_Z17readDivisionSpaceRiPc > Klein_nb_P1000_dim10000_cpu_rot1.txt 

爲了排除調用圖功能,你需要使用-Q選項:

gprof eg gmon.out -Q_Z17readDivisionSpaceRiPc > Klein_nb_P1000_dim10000_cpu_rot1.txt 

此選項可以在相同使用時間:

gprof eg gmon.out -P_Z17readDivisionSpaceRiPc -Q_Z17readDivisionSpaceRiPc > Klein_nb_P1000_dim10000_cpu_rot1.txt 

說明:_Z17readDivisionSpaceRiPc是功能錯亂的名稱。對於檢測功能選項--no-demangle的錯位名稱可能會有用。您可以嘗試通過以下方式檢測的功能readDivisionSpace重整名稱:

gprof eg gmon.out --no-demangle -Q -b | grep readDivisionSpace 
+0

我用「gprof的例如是gmon.out -P_readDivisionSpace -Q_readDivisionSpace> Klein_nb_P1000_dim10000_cpu_rot1.txt」,但功能依然計數。我錯過了什麼? :/ – gsamaras 2014-09-04 19:28:28

+0

'_readDivisionSpace' - 看起來很可疑,是真正的錯位名稱嗎?你可以用'gprof檢查名字,例如gmon.out --no-demangle -Q -b'。 – Gluttton 2014-09-04 19:30:21

+0

我不知道什麼是重名的。這是我在我的問題中寫的功能。命令應該如何? – gsamaras 2014-09-04 19:32:17

相關問題