我有一个简单的C程序如下
main(int argc, char *argv[])
{
/* Calling read function to character device driver*/
int fd = fopen("MyCharDevice",0);
/*write call to device and further code*/
return 0;
}
现在,当我使用gprof
对其进行概要分析时,我没有时间处理main()
函数本身。
$ gprof -b -a a.out > analysis.txt
我正在调用我的char设备(我需要进行分析)。我尝试将对应于调用设备驱动程序的代码放在其他一些函数中,但我得到同样的东西。
analysis.txt
的内容如下:
Flat profile:
Each sample counts as 0.01 seconds.
no time accumulated
% cumulative self self total
time seconds seconds calls Ts/call Ts/call name
0.00 0.00 0.00 3 0.00 0.00 __gmon_start__
Call graph
granularity: each sample hit covers 4 byte(s) no time propagated
index % time self children called name
0.00 0.00 3/3 main [3]
[4] 0.0 0.00 0.00 3 __gmon_start__ [4]
-----------------------------------------------
Index by function name
[4] __gmon_start__
我没有得到我怎么能得到时间。
我的要求:
实际上我必须使用一些Linux性能分析工具来比较信号量和R / W信号量性能。所以我正在使用gprof
。
答案 0 :(得分:0)
我是一张记录,一遍又一遍地重复
gprof
对I / O时间无视
gprof
对I / O时间视而不见
gprof
对I / O时间视而不见
等等。
以及告诉时间花费的方法是围绕它进行循环和
在GDB下暂停它并检查堆栈
暂停它在GDB下并检查堆栈
暂停它在GDB下并检查堆栈
等等。
for all these reasons,祝你好运!