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

Starting Visual Studio project with a Relase Build itself

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

感谢您的宝贵时间。

我不确定你说的 "start with a Release Build" 是什么意思,也不知道为什么这是个问题。

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

调试版本是关闭了编译器优化的版本。 C/C++ 运行时的默认链接是调试 MSVCRT*.DLL 文件。使用调试版本,逐行调试变得容易得多,因为 none 代码或变量已被优化。您通常不会向客户提供 DEBUG 版本。

发布版本是启用了编译器优化的版本。由于大部分代码是内联和优化的,因此调试稍微困难一些。每个生成的程序集块并不总是对应的 "line of code"。因此,当使用调试器逐行执行 Release 构建中的函数时,您可能会观察到一些非常奇怪的效果(变量在 watch window 中不可见,指令指针箭头移动到意外行等。 ..).

每个配置都可以在您的 Visual Studio 项目的 project properties 中拥有优化设置、全局定义和其他 compiler/linker 设置。

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