我需要显示从深度嵌入式CPU中提取的分析信息,以我团队中其他开发人员能够采取行动的方式呈现它。分析数据是每个函数进入和退出时循环计数器的快照,因此我们有一个以亚微秒定时精度注释的调用图。我不想像gprof一样转储函数名称和时序,我正在寻找更容易理解和行动的东西。
是否有人使用过特别好的分析工具(在任何平台上),这样可以轻松识别要钻取的代码区域?我正在寻找一个鼓舞人心的例子来关注如何显示调用图,但如果有一个输入格式的好工具,我可以按摩我的数据,我将使用它。我可以使用Windows,Linux或MacOS X来运行可视化工具。
IBM DeveloperWorks上的个人资料分析文章引导我GraphViz,其网站上有一个profiling示例。除非另有建议,我将使用GraphViz并模仿他们的分析示例。
答案 0 :(得分:17)
可视化分析数据的另一个简洁工具是gprof2dot.py python script。 它可用于可视化几种不同的格式:“这是一个Python脚本,用于将prof,gprof,oprofile,Shark,AQtime和python profilers的输出转换为点图。”这就是输出的样子:
(来源:googlecode.com)
答案 1 :(得分:4)
我使用Kprof http://kprof.sourceforge.net/
它已经过时了,但我从来没有找到更好的工具来检查gprof的结果。
答案 2 :(得分:3)
“GTKWave”怎么样? 但您必须在代码中插入探针。
答案 3 :(得分:3)
答案 4 :(得分:2)
我建议你删除OProfileUI的gprof + graphviz,除非你没有选择。
答案 5 :(得分:2)
IE 8b2提供了simple display的javascript调用树,我认为它比GraphViz图表更有用。
GraphViz图表非常适合可视化调用树,但很难将时间问题可视化(恕我直言,更重要的数据)。
**编辑:我认为值得指出的是,所有建议的工具都使用基于网格的树来可视化调用树。这样您就可以看到调用结构,而不会像我认为的那样使用GraphViz图表来淡化时序数据。*
答案 6 :(得分:2)
您可以使用Eclipse的插件Senseo。它向您显示性能,内存分配,创建的对象,花费的时间,调用的实际方法,将鼠标悬停在方法签名或调用上,调用上下文树,包浏览器等等。
答案 7 :(得分:1)
JetBrains dotTrace(有一个你可以玩的试用版)。它组织调用堆栈,可以轻松找到故障点。还有很多过滤功能。非常容易导航并找到您要找的东西。
答案 8 :(得分:0)
我编写了一个基于浏览器的可视化工具profile_eye,它可以在gprof2dot的输出上运行。
gprof2dot非常适合处理许多分析工具输出,并且在图形元素放置方面做得很好。最终渲染是静态图形,通常非常混乱。
使用d3.js,可以通过未聚焦元素,工具提示和fisheye distortion的相对淡化来消除大部分混乱。
要进行比较,请参阅profile_eye's visualization的canonical example used by gprof2dot。