2014-09-29 51 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)结束)