首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C和C++源代码分析工具

C和C++源代码分析工具
EN

Stack Overflow用户
提问于 2010-11-10 04:47:59
回答 4查看 48K关注 0票数 25

可能重复: 您最喜欢的分析工具(对于C++)是什么?

有什么好的工具来分析C和C++混合的源代码吗?什么是正反两方面的,哪些是你曾经使用过的,哪些是值得使用的。请不要给我一个从谷歌的工具列表。我也可以这样做,我想要的是利用那些使用过这些工具的人的个人经验,并且知道他们的利弊。

提前谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-11-10 04:53:38

我发现gprof是最好的CPU热点分析器,Google性能工具是最好的抽样分析器。两者都为C和C++工作。

在我看来,有Windows上没有良好的分析工具

gprof利弊

  • GCC
  • 与C和C++一起工作
  • 只处理CPU时间,以及二进制文件中的代码,您需要在
  • 非常精确
  • 为执行增加一小部分开销。

Google性能工具的优缺点

  • 我认为这需要GNU工具链
  • 有时无法识别符号
  • 非常可定制
  • 输出到多种格式,包括Callgrind格式,并自动为您加载KCacheGrind。
  • 还有各种内存分析工具
  • 是一个抽样分析器,开销最小。

有关有用的问题和答案

票数 35
EN

Stack Overflow用户

发布于 2010-11-10 18:05:21

我恭敬地不同意马特的观点。

我在Windows上一直使用的工具是随机暂停技术,它适用于IDE支持的所有语言。

作为使用它进行性能优化的一个示例,这个案例展示了如何通过一系列步骤实现43次加速比。

Gprof有很多问题,列在这里,根据google手册,一些相同的问题会重复出现,比如报告过程,而不是线条,强调自己(本地)时间,强调图形等等(我无法从文档中判断它是否在阻塞时采样)。

随着软件系统变得越来越大,自我时间变得越来越不相关。程序计数器大部分时间都花在库例程上,或者在系统中被阻塞。图形变成了巨大的巢穴。人们问:“我知道函数X很昂贵,但是函数X的问题在哪里呢?”更重要的是,“瓶颈”越来越大,因为堆栈的平均深度越来越大,而且堆栈的每一层都是进行更多函数调用的新机会。

缩放是一个示例,它可以逐行报告百分比,在阻塞时报告样本,并允许用户控制采样,以避免在用户输入时稀释样本集。

编辑:对不起,不能留下足够好的一个人。这里有一个新的解释:

程序的工作方式是,他们找到了一棵呼叫树,就像我窗外的橡树。它有一个主干(主),它发芽分支(呼叫站点),在几个层次上发芽到叶子(指令)和橡子(阻塞呼叫)。

当树木外科医生来修剪(优化)它,他是否只看哪里的叶子(热点)?他是否忽略了橡子(封堵期间没有样品)?不,他寻找的分支(调用站点)都是沉重的(在堆栈上很多)和不健康(不必要的)。这就是他要修剪的东西。这就是随机暂停和Zoom所做的,就是帮助查找那些呼叫站点。

票数 5
EN

Stack Overflow用户

发布于 2010-11-10 06:31:21

您可以使用愈伤组织创建分析输出。它是瓦兰的一部分。Callgrind可以与KCacheGrind一起使用,只要您使用的是Linux,这可能就值得一看。

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

https://stackoverflow.com/questions/4141307

复制
相关文章

相似问题

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