[英]Excluding a function from gprof results
我想從 gprof 生成的 output 中排除一些函數。 換句話說,我不希望在計算每個 function 在執行期間花費的時間百分比時包括它們。 我在一處讀到-E選項可以使用。
但是我正在使用gprof -E function_to_be_exluded my_program_name ,但沒有任何反應。 手冊說它已折舊,您應該改用symspecs 。 但是,我浪費了半個小時試圖弄清楚如何使用symspecs來實現它,但沒有運氣。 任何人都可以在這方面幫助我。
確切地說, gprof -e -E 已被棄用並被具有參數的較新相關選項的使用所取代 - symspecs。 所以嘗試使用:
gprof --no-time=symspec
The -n option causes "gprof", in its call graph analysis, not to propagate times for
symbols matching symspec.
e.g.
gprof --no-time=name_of_function_you_dont_want_to_profile.
將此與其他 gprof 選項一起使用(-E -e 絕對排除)
據該男子稱:
對於顯示平面輪廓並從中排除 function 您需要使用-P
選項:
gprof main gmon.out -Pfunction_name
為了顯示調用圖並從中排除 function 您需要使用-Q
選項:
gprof main gmon.out -Qfunction_name
此選項可以重復並同時使用:
gprof main gmon.out -Pfunction_name -Qfunction_name -Qother_function_name
如果您需要從一份報告中排除 function 但不排除其他任何 function 您需要使用-p
或-q
選項。
例子:
創建程序:
#include <stdio.h>
#include <stdlib.h>
void func_a () {printf ("%s ",__FUNCTION__);}
void func_b () {printf ("%s ",__FUNCTION__);}
void func_c () {printf ("%s ",__FUNCTION__);}
int main ()
{
func_a ();
func_b ();
func_c ();
return EXIT_SUCCESS;
}
編譯它: gcc main.c -pg -o main
並啟動:
$ ./main
func_a func_b func_c
生成配置文件報告:
如果您只需要打印平面配置文件,則需要致電:
$ gprof main gmon.out -b -p % cumulative self self total time seconds seconds calls Ts/call Ts/call name 0.00 0.00 0.00 1 0.00 0.00 func_a 0.00 0.00 0.00 1 0.00 0.00 func_b 0.00 0.00 0.00 1 0.00 0.00 func_c
如果您需要打印平面配置文件,不包括函數func_a
和func_c
以及完整的調用圖,您需要調用:
$ gprof main gmon.out -b -Pfunc_a -Pfunc_c -q % cumulative self self total time seconds seconds calls Ts/call Ts/call name 0.00 0.00 0.00 1 0.00 0.00 func_b index % time self children called name 0.00 0.00 1/1 main [9] [1] 0.0 0.00 0.00 1 func_a [1] ----------------------------------------------- 0.00 0.00 1/1 main [9] [2] 0.0 0.00 0.00 1 func_b [2] ----------------------------------------------- 0.00 0.00 1/1 main [9] [3] 0.0 0.00 0.00 1 func_c [3] -----------------------------------------------
如果您需要打印不包括函數func_a
和func_c
的平面配置文件以及不包括func_b
的調用圖,則需要調用:
$ gprof main gmon.out -b -Pfunc_a -Pfunc_c -Qfunc_b % cumulative self self total time seconds seconds calls Ts/call Ts/call name 0.00 0.00 0.00 1 0.00 0.00 func_b index % time self children called name 0.00 0.00 1/1 main [9] [1] 0.0 0.00 0.00 1 func_a [1] ----------------------------------------------- 0.00 0.00 1/1 main [9] [3] 0.0 0.00 0.00 1 func_c [3] -----------------------------------------------
除非我誤解了你在問什么...
gprof a.out --no-time=function_name
為我工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.