我想检查一个函数进行的读写次数。可以说我的 c 程序有两个函数,它们分别与 main() 调用,这两个函数都提供了一些读写活动(或 IO 操作的系统调用)。现在我想从IO方面对这两个功能进行比较分析。
请帮忙,谢谢
我想检查一个函数进行的读写次数。可以说我的 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 周期的分布。
您需要包装 read 和 write 函数,并用目标程序中的包装器替换 read 和 write 函数。