3

我想检查一个函数进行的读写次数。可以说我的 c 程序有两个函数,它们分别与 main() 调用,这两个函数都提供了一些读写活动(或 IO 操作的系统调用)。现在我想从IO方面对这两个功能进行比较分析。

请帮忙,谢谢

4

3 回答 3

3

围绕 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);
于 2013-01-20T11:36:56.460 回答
2

这本质上是代码覆盖分析调用图跟踪分析的混合体。

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

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

于 2013-01-20T11:41:26.597 回答
1

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

于 2013-01-20T11:37:07.930 回答