使用 Release Build 本身启动 Visual Studio 项目
Starting Visual Studio project with a Relase Build itself
如果我决定在基于 Visual Studio 的 C++ 项目开始时使用发布版本本身,我应该注意哪些陷阱(如果有的话)?我已经知道如何通过在项目属性中应用必要的更改来调试发布版本。
- 是否有任何问题似乎不会在发布版本中弹出,
但是调试版本可以突出显示相同吗?
- 我的项目是小项目还是大项目重要吗?
- 此外,如果我处理的是托管代码,除了
本机 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
部分下。这些通常是不适合客户的测试挂钩。我们的测试自动化通常在调试和零售配置的混合上运行。
如果我决定在基于 Visual Studio 的 C++ 项目开始时使用发布版本本身,我应该注意哪些陷阱(如果有的话)?我已经知道如何通过在项目属性中应用必要的更改来调试发布版本。
- 是否有任何问题似乎不会在发布版本中弹出, 但是调试版本可以突出显示相同吗?
- 我的项目是小项目还是大项目重要吗?
- 此外,如果我处理的是托管代码,除了 本机 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
部分下。这些通常是不适合客户的测试挂钩。我们的测试自动化通常在调试和零售配置的混合上运行。