首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux C++分析器

Linux C++分析器
EN

Software Recommendation用户
提问于 2014-07-21 16:59:35
回答 2查看 10.6K关注 0票数 12

这是一件容易的事。我需要分析Linux C++程序:

必须要求:

  • 免费非商业用途
  • 使用gcc (g++)编译的程序
  • 使用x86-64程序。
  • 使用优化(-O3)编译的配置文件程序。(*见脚注)
  • 即使使用优化启用,也可以显示真实的符号名。(*见脚注)

有用的特点:

  • 易于用于基本分析(检测hot代码)
  • 行粒度(函数中的行是热行)
  • 装配指令粒度

将是很好的功能:

  • GUI (偶数第三党)
  • 安装容易

未来的需求(我现在不需要它,但在不久的将来我将需要它):

  • 配置文件多线程程序
  • clang合作(会很好)

例如,在Windows上,非常好。

我在Linux上给了gprof一次尝试,但无法使它使用优化启用,即使是使用-g -pg

(*)调试和分析信息可能需要存在(例如,-p -g -pg)。

EN

回答 2

Software Recommendation用户

发布于 2015-04-24 12:57:02

您至少应该了解随机停顿技术。它并不能满足您所有的需求,但它比任何自动分析器都更有效地找到您所称的“热”代码,我称之为“加速的机会”。

它之所以更有效是因为这一点。

想象一个理想的轮廓仪。假设它获取程序状态的随机时间样本(包括堆栈和内存,用于所有线程)。假设它具有人工智能和自动编程能力,这样它就可以理解程序以及编写程序的人。假设它检查了每个样本,并确定了该时刻被花费的全部原因,并且正在寻找一种方法,通过可能的改变来避免花费时间。如果它看到了加速的机会,并且在样本的分数X上看到了它,它可以建议,如果你做了那个改变,你可以节省到分数X的时间。

这不是个很棒的侧写员吗?它可以找到各种各样的东西,而不仅仅是函数,花费大量的时间,你不能做任何事情。

值得一问的是,它需要采集多少样本?通常的假设是--越多越好--精确度越高。不对!你只是想找出问题,而不是衡量它。如果一个加速机会需要的分数X的时间,它将采取分数X的10,000个样本,它将采取分数X的10个样本(大致)。因此,如果它足够大,值得修理,它不需要太多的样本。事实上,它只要看到一个问题两次就知道它是重要的。平均需要2/X样本,所以如果X为0.3,则需要6.67个样本。(统计上的理由是这里。)

好吧,如果您不介意使用自己的头,手动采集一些样本,比如使用jstack或调试器,那么您已经拥有了理想的分析器。许多程序员都知道这一点,并利用它使他们的代码惊人地快。

票数 3
EN

Software Recommendation用户

发布于 2015-03-11 07:03:37

[医] Allinea地图与列表中的所有内容匹配--它还像处理线程一样处理您的“未来需求”。没有比它更好的东西了--它的开销很低--通常是<5%,而呼喊则远远超过100%。

这是商业性质的--但为了完整的答案,这属于这里。

票数 1
EN
页面原文内容由Software Recommendation提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwarerecs.stackexchange.com/questions/9992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档