我需要一个适用于Windows和Linux的良好的分析器(它们不必是相同的;每个操作系统的单独建议都可以),它们可以附加到一个已经运行的进程中,该进程没有在任何“特殊”中编译方式,并给我统计过程大部分时间花在哪些功能上。我有一些长期运行的科学代码,我希望得到它在大部分时间花在执行的各个阶段的快照,并且是无需运行整个程序即可获得结果。
我正在使用的编译器(Digital Mars D)附带一个仪器分析器。这对我正在运营的工作来说太慢了。由于我只对识别主要瓶颈感兴趣,因此我想要快速且易于使用的东西,即使它只是大致准确。理想情况下,它还应该能够同时分析所有线程并为我提供汇总报告。
在Linux上,我一直在使用GDB作为穷人的采样分析器(暂停我的应用程序几次并查看它的功能)。基本上,我正在寻找一个更自动化的版本。
最后一个要求:在Linux上,它必须易于安装而没有root权限,因为我将在我没有root权限的服务器上运行它。
编辑:虽然代码是用D编写的,D编译模型等与C类似,但为C编写的工具应该可以正常工作。
答案 0 :(得分:18)
如果你有一个相当新的内核,你可以使用perf
:
perf record -p <pid> -g
...然后perf report
一旦你收集了足够的样本。
答案 1 :(得分:3)
您正在寻找oprofile:
答案 2 :(得分:2)
答案 3 :(得分:2)
我没有尝试过,但是xProf是专门为D编写的。它是一个统计分析器。
答案 4 :(得分:0)
Windows性能记录器(WPR)和Windows性能分析器(WPA)是Windows 8及更高版本的最佳性能分析工具。 Xperf在Windows 7上运行得非常好。