2010-11-29 69 views
4

您是否知道用于查看应用程序分析结果的基于文本的应用程序?分析结果基本上包含C++函数回调列表以及遇到这些回溯的频率;现在我正在寻找一个控制台工具来分析原始数据(哪个回溯最经常发生;哪个功能最常被调用,与呼叫跟踪无关)。用于分析结果的基于文本的查看器

到目前为止,我已经从原始数据创建了兼容callgrind的文件,然后使用优秀的KCachegrind工具进行分析;但现在我也在寻找一种不需要基于文本的终端的工具。有任何想法吗?

回答

1

看看callgrind_annotate

该命令读入配置文件数据,并打印排序的功能列表(可选)与源注释。

1

我写了这样一个查看器一次。它专注于一行代码,显示通过该行的样本的百分比,以及允许转换为上级或下级代码行的蝴蝶视图。

它做了一个很好的演示,但我真的使用它?不是很长。

(我假设你想加速期间已采取堆样品,在用户等待即不是。)

的事情是,该程序可能做一些在浪费时间。 (如果不是这样,你不能加快速度。) 无论那种浪费的东西是什么,它包含了一些百分之几的时间花在了贫穷的原因,如10%,50%,90%,或其他。在此期间,它在堆栈中,因此对堆栈样本的检查将显示出来。

而且,你不必看很多。如果有50%的时间需要处理,1000个样本将显示约500个样本,10个样本会显示约5个样本。较大数量的样本将用一个额外的精度数字来估算百分比。如果您的目标是要隔离问题以便解决问题,则不需要额外的数字。

所以,一个按行显示堆栈样本百分比的工具是非常好的事情,因为浪费的代码会出现在它上面,显示百分比。

它没有显示的是语句执行的原因,这是你如何知道它是否浪费。看看栈上的语句的上下文确实告诉你。

所以即使我有观众,我只是最终检查了样品本身,只有约10或20个。百分比越大,我发现之前需要查看的样本数量越少。 Here's an example.