我应该如何分析visual c++ express?

Posted

技术标签:

【中文标题】我应该如何分析visual c++ express?【英文标题】:How should I profile visual c++ express? 【发布时间】:2010-06-22 20:11:21 【问题描述】:

我在这里阅读了很多提供分析建议的帖子,但我需要问这个。

据我所知,Visual C++ Express 不会生成分析器程序使用的调试文件。我尝试了 AMD Codeanalyst,它似乎工作正常,只是我的程序中没有一个例程被识别——只有很多“未识别的模块”。

我是 C++ 新手。我习惯了 Python 使用的简单分析器。我认为很简单,因为语言是被解释的。

感谢任何见解。

P.S.:方向盘的转动是汽车转动的导数吗?

【问题讨论】:

对于认真的开发,您必须支付 Microsoft 税或切换到开放平台。 Visual Studio Express 只是一个让您着迷的示例。至于ps:我怀疑;车轮的角度会以非线性方式影响与道路的摩擦力。 你能推荐一个与 Visual Studio for c++ 类似的开源软件吗? 我太喜欢使用 IDE 了,所以我自己不能推荐任何东西;我喜欢的 shell 环境、GNU 工具和基本的源代码编辑器并不符合每个人的口味。我听过人们谈论 Eclipse 和 Codeblocks,但我不知道它们是否好用,也不知道它们与 Visual Studio 相比如何。 关于“未识别模块”问题 - 您分析的程序是否包含调试符号?探查器将需要它们来识别功能。应该有一个构建选项来包含或删除这些。 @Mike。我会看看使用裸骨。无论如何,您最终都必须弄清楚它们,因为我遇到的 IDE(不包括 MS)使用它们来编译、链接、调试等。感谢您的回复。 【参考方案1】:

首先,汽车的极角速度应该与汽车的速度和方向盘的角位置成正比(第一个近似值)。

其次,几乎没有教授、博主或书籍作者会告诉你这一点,但如果你想看看代码在做什么并优化它,the hands-down simplest way is this。

补充:程序员强烈倾向于认为任何自动分析工具都会比手动技术做得更好,但这取决于他们所做的具体细节。他们中的大多数实施流行的而不是最有效的。结果是遗漏了一些性能问题,从而限制了您可以获得的加速。 Here is a list of common misconceptions 导致无法发现性能问题。

一些分析器确实几乎正确,包括RotateRight/Zoom和LTProf。

【讨论】:

我不了解教授、博主或作者,但这正是 oprofile for linux 的工作原理。虽然采样是自动完成的,每秒很多次。 @Mike Seymour:您可能会这么认为,但它非常复杂,并且按照文档,它似乎遇到了这里列出的许多问题:***.com/questions/1777556/alternatives-to-gprof/… @Mike Seymour: ... 它需要 1) 即使在 I/O 期间也能获得线程的随机堆栈样本,2) 能够在用户输入期间忽略样本,或者更好地让用户控制采样热键,3)每行(不是每个函数)报告包含该行的样本百分比(忽略递归),4)理想情况下让用户查看单个堆栈样本。最后,不需要大量或高频采集样本。事实上,lsstack 是一种非常有用的获取方式。 @Mike Seymour:...例如,任何可以节省 10% 或更多执行时间的问题都可以在 20 个样本中非常可靠地找到。未准确测量 - 发现准确。 是的,暂停是一种非常有效的技巧。我已经通过这种方式修复了几个缓慢的进程。【参考方案2】:

你确定吗? IIRC,Visual Studio Express 可以创建 .PDB 文件,但如果您使用的是发布版本,您可能必须要求它为您生成调试信息。 (它必须——否则 Visual Studio 的调试器将无法工作!)

【讨论】:

嗯,VSE 确实创建了一些 .pdb 文件。我将不得不用 Codeanalyst 来解决更多问题。 Visual Studio 的调试器不适用于 VS express。 @Peter Stewart:错误.. 是的,VS 的调试器在 VS express 中工作。你可以设置一个断点并运行程序,它会正常运行。 对不起。是的,你是对的,我在考虑 VS 的分析器。【参考方案3】:

编写自己的分析器并不难。或者你可以选择一个开源的,它背后有一些测试。你可能想看看我自己的开源分析器,称为cRunWatch

【讨论】:

这看起来像一个简洁的分析器,我也喜欢单元测试程序。我会进一步研究。

以上是关于我应该如何分析visual c++ express?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio 2013 Express 中打开 C++ 项目?遇到很多错误

如何将项目从 Visual C++ 6.0 转换为 Visual Studio Express 2010?

如何将 WTL 和 ATL 添加到 Visual Studio C++ Express 2008

Visual Studio Express 2013:如何使用现有 C++ 源文件创建项目?

如何使用 Visual C++ 2010 Express 从 32 位环境为 64 位 Windows 编译 Qt?

如何使用 Visual Studio Express 2013 将 C# 接口实现/合并到一个简单的 C++ 程序中