本文介绍要设置的编译器和链接器开关,以便对应用程序的发布版本进行调试。
从 Visual Studio 2022 版本 17.14 开始,可以使用更好的体验来调试优化代码,就像它是未优化编译一样,同时保持优化代码的速度。 有关详细信息,请参阅 C++动态调试(预览版)。
调试发布版本
打开项目的“属性页”对话框。 有关详细信息,请参阅在 Visual Studio 中设置 C++ 编译器和生成属性。
单击“C/C++”节点。 将“调试信息格式”设置为“C7 兼容(/Z7)”或“程序数据库(/Zi)”。
展开“链接器”,然后单击“常规”节点。 将“启用增量链接”设置为“否(/INCREMENTAL:NO)”。
在 “链接器”下,选择 “调试 ”节点。 将“生成调试信息”设置为“是(/DEBUG)”。
在 “链接器”下,选择 “优化 ”节点。 将引用设置为否 (/OPT:NOREF),并将启用 COMDAT 折叠设置为否 (/OPT:NOICF)。
现在可以调试发布版本应用程序。 若要找到问题,请单步执行代码(或使用实时调试),直到找到发生失败的位置,然后确定错误的参数或代码。
如果应用程序可在调试版本中正常运行,但在发布版本中失败,则某种编译器优化可能会暴露源代码中的缺陷。 若要隔离该问题,请禁用每个源代码文件的所选优化,直到找到引起问题的文件和优化。 (若要加快该过程,可以将文件分为两个组,对一个组禁用优化,当在某个组中发现问题时,继续划分,直到隔离问题文件。)
使用 /RTC 尝试在调试版本中发现此类 bug。
有关详细信息,请参阅优化代码。