C-测量函数调用的读写次数

C-测量函数调用的读写次数,c,C,我想检查一个函数的读写次数。假设我的c程序有两个函数,分别从main()调用,这两个函数都提供一些读写活动(或IO操作的系统调用)。现在我想从IO的角度对这两种功能进行比较分析 请提供帮助,谢谢围绕IO函数编写包装,以便在调用包装时增加计数器,例如: void custom_read(int *counter) { *counter++; real_read(); } /* ... */ int read_counter = 0; custom_read(&read_coun

我想检查一个函数的读写次数。假设我的c程序有两个函数,分别从main()调用,这两个函数都提供一些读写活动(或IO操作的系统调用)。现在我想从IO的角度对这两种功能进行比较分析


请提供帮助,谢谢

围绕IO函数编写包装,以便在调用包装时增加计数器,例如:

void custom_read(int *counter) {
  *counter++;
  real_read();
}

/* ... */

int read_counter = 0;
custom_read(&read_counter);
custom_read(&read_counter);
...
custom_read(&read_counter);

您需要包装读写函数,并用目标程序中的包装器替换读写函数。

这实际上是代码覆盖率分析、调用图跟踪和评测的混合

要使用的工具在很大程度上取决于操作系统,但总体思路是相同的:


使用调用图生成器查找触发要分析的函数的所有代码路径。接下来,使用探查器,统计另一个函数调用函数的次数(例如,可以过滤函数
foo
调用函数
bar
)的所有事件)。现在,您可以使用代码覆盖率分析来查看代码区域的CPU周期分布。

谢谢,更具体地说,我使用的是ubuntu-12.04。那么,我应该使用一个探查器工具来检测特定函数产生的IO事件的计数吗?在这种情况下,我建议利用这个事实,您可以从另一个进程控制gdb。我会用它来实现一个小脚本,在gdb中加载二进制文件,在需要跟踪的函数上设置断点,运行程序,每次到达断点时,让gdb转储回溯并继续程序。有一个很好的Python模块可以调用和控制GDB: