3

该应用程序不计算事物,但执行 i/o、读取文件、使用网络。我希望分析器显示它。

我期望像 callgrind 这样的东西,每个问题都会调用 clock_gettime 。

或者像 oprofile 那样中断我的应用程序(当它正在睡眠或等待套接字/文件/任何东西时)以查看它在做什么。

我希望像“read”、“connect”、“nanosleep”、“send”,尤其是“fsync”(以及他们所有的调用者)这样的东西是粗体的(而不是像执行计算的字符串或数字函数这样的东西)。

平台:GNU/Linux @ i386

4

2 回答 2

2

快速破解 linux 的简单采样分析器:http: //vi-server.org/vi/simple_sampling_profiler.html

它附加backtrace(3)到 上的文件SIGUSR1,然后将其转换为带注释的源。

当它定期探测程序时,我们会看到等待某些东西的函数。

当它遍历堆栈时,我们也会看到调用者。

来自类似问题的答案的人也推荐 Zoom。

于 2010-10-22T11:39:00.143 回答
0

There's no real way to answer that question without knowing your platform and a little more about what you are trying to do.

When I'm running on an Intel platform, I like to use the Time Stamp Counter (RDTSC). It is tough to beat resoultion in the sub-microsecond range. I just put a call to it before and after a chunk of code, and compare the difference.

于 2010-10-21T23:11:48.070 回答