如果我决定在基于Visual Studio的C ++项目开始时使用Release Build本身,那么我应该注意哪些陷阱(如果有的话)?我已经知道如何通过在项目属性中应用必要的更改来调试发布版本。
感谢您的时间。
答案 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
部分之下。这些通常是不适合客户的测试钩。我们的测试自动化通常在调试和零售配置的混合上运行。