2014-09-29 40 views
0

有人可以告訴我如何使用GNU profiler分析C程序中的單行或代碼塊? 我用gprof ./a.out gmon.out這給我扁平的配置文件和調用圖。但是,我希望看到更頻繁訪問的行。由GNU提供的C程序的行級別分析

感謝,

+0

提取這些行成自己的功能?這個想法「做了功能B的行動A需要很長時間」讓我覺得行動A首先應該是它自己的功能。 – Carl 2014-09-29 18:17:49

+0

雖然這似乎是一個答案:http://stackoverflow.com/questions/3263573/is-there-a-profiler-for-c-gcc-to-profile-code-lines-separately?rq=1 – Carl 2014-09-29 18:18:47

回答

1

這大概是那些你不知道你應該一派術語的一件事,所以我會回答它:

你正在尋找任期「註釋」 - 您想註釋源代碼並在代碼中逐行查看。

使用-A標誌調用gprof將轉儲出每行被捕獲的樣本。

另請參見:

https://sourceware.org/binutils/docs/gprof/Annotated-Source.html

+0

但它不會逐行給你包容。 (如果一行是一個很慢的函數調用,它不會看到它。)它也不會給你掛鐘時間。 (這對I/O來說是盲目的。) – 2014-09-29 18:44:58

+0

謝謝,我在這裏找到了答案https://gcc.gnu.org/onlinedocs/gcc/Invoking-Gcov.html :) – mOna 2014-09-29 20:08:28

0

好吧,我會後這個答案,所以如果像我這樣一個新手尋找它可以找到它更快:) 這裏的步驟:source

  1. gcc -fprofile-arcs -ftest-coverage fourcefile.c (在編譯文件* .gcno的末尾將生成)
  2. 運行可執行文件。
  3. 運行gcov的:gcov sourcefile.c (在運行後,會生成包含其中包含了所有必需的信息文件(* .gcov)結束)