本文介绍了如何修改一个C程序,这样可以gprof的配置文件呢?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
当我在我的C程序运行gprof的它说我的程序没有时间积累,并显示0时对所有的函数调用。但是它确实算函数调用。
When I run gprof on my C program it says no time accumulated for my program and shows 0 time for all function calls. However it does count the function calls.
如何修改我的程序,这样gprof的就能算多少时间的东西需要运行?
How do I modify my program so that gprof will be able to count how much time something takes to run?
推荐答案
你编译时指定-pg?
http://sourceware.org/binutils/docs-2.20/gprof/Compiling.html#Compiling
一旦被编译,运行该程序,然后在二进制运行gprof的。
Once it is compiled, you run the program and then run gprof on the binary.
例如:
test.c的:
#include <stdio.h>
int main ()
{
int i;
for (i = 0; i < 10000; i++) {
printf ("%d\n", i);
}
return 0;
}
编译为 CC -pg test.c以
,然后根据的a.out
运行,那么 gprof的a.out的
,给我
Compile as cc -pg test.c
, then run as a.out
, then gprof a.out
, gives me
granularity: each sample hit covers 4 byte(s) for 1.47% of 0.03 seconds
% cumulative self self total
time seconds seconds calls ms/call ms/call name
45.6 0.02 0.02 10000 0.00 0.00 __sys_write [10]
45.6 0.03 0.02 0 100.00% .mcount (26)
2.9 0.03 0.00 20000 0.00 0.00 __sfvwrite [6]
1.5 0.03 0.00 20000 0.00 0.00 memchr [11]
1.5 0.03 0.00 10000 0.00 0.00 __ultoa [12]
1.5 0.03 0.00 10000 0.00 0.00 _swrite [9]
1.5 0.03 0.00 10000 0.00 0.00 vfprintf [2]
你想说什么?
这篇关于如何修改一个C程序,这样可以gprof的配置文件呢?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!