使用Release Build本身启动Visual Studio项目

时间:2015-03-26 07:58:17

标签: c++ visual-studio managed-c++

如果我决定在基于Visual Studio的C ++项目开始时使用Release Build本身,那么我应该注意哪些陷阱(如果有的话)?我已经知道如何通过在项目属性中应用必要的更改来调试发布版本。

  • 是否有任何问题似乎没有在发布版本中弹出, 但Debug版本可以突出显示相同的内容吗
  • 如果我有一个小项目或一个大项目,这有关系吗?
  • 另外,如果我正在处理托管代码,那将是否重要 本机C ++代码。
  • 默认打开的优化怎么样? 发布版本。他们会阻止或隐藏Release版本中的错误吗?

感谢您的时间。

1 个答案:

答案 0 :(得分:3)

我不确定你的意思是“从发布版本开始”或者为什么这是一个问题。

启动新的Visual Studio项目时,它会为其生成两个配置。调试和发布。您可以随时在Debug和Release之间翻转配置。

Debug构建是关闭编译器优化的构建。与C / C ++运行时的默认链接是Debug MSVCRT * .DLL文件。通过调试构建,可以更容易地进行逐行调试,因为没有任何代码或变量已经过优化。您通常不会向客户提供DEBUG构建。

发布版本是打开编译器优化的版本。由于大部分代码都是内联和优化的,因此调试稍微困难一些。对于生成的程序集的每个块,并不总是存在相应的“代码行”。因此,当使用调试器通过Release版本中的函数逐行执行时,您可能会观察到一些非常奇怪的效果(在监视窗口中看不到变量,指令指针箭头移动到意外行等等)。

每个配置都可以在Visual Studio项目的project properties中具有优化设置,全局DEFINE和其他编译器/链接器设置。

FWIW,在我们的产品组中,我们实际上有三种配置:Debug,Release和Ship。 Ship和Release版本具有相同的编译器优化,但在Ship版本中,我们将SHIP_BUILD声明为定义。某些代码块被排除在代码的#ifndef SHIP_BUILD部分之下。这些通常是不适合客户的测试钩。我们的测试自动化通常在调试和零售配置的混合上运行。