0

我正在使用最初在 VS 2006 中构建的已签出 Visual Studio C++ 项目。我想设置断点以查看调用某些函数的位置并更好地遵循工作流程。

我在 Visual Studio 2010 中以发布模式重新构建了代码,它构建并运行良好。不幸的是,通过一些研究,我了解到某些断点在 Release 模式下无法命中,我需要在 Debug 模式下构建代码才能命中断点。

但是,当我尝试在调试模式下构建代码时,链接器会抱怨 .lib 文件的 _ITERATOR_DEBUG_LEVEL 错误。有没有办法可以在 .libs 中更改这个 _ITERATOR_DEBUG_LEVEL 以便我可以在调试模式下构建它?如果没有,有什么方法可以在 Release 模式或 ReleaseWithDebug 模式下命中这些断点?

4

2 回答 2

0

我最近刚看到汉斯尔曼的这篇文章:

http://www.hanselman.com/blog/DebugVsReleaseTheBestOfBothWorlds.aspx

它基本上说您可以使用调试设置和 ini 文件的组合进行优化(发布)和调试而无需重新编译(调试)。

于 2013-06-25T16:14:16.570 回答
0

您可以通过配置项目属性页面来在发布模式下调试 C++,如下所示:

  1. 在 C/C++ 节点 -> 常规节点下。将“调试信息格式”设置为“C7 兼容 (/Z7)”或“程序数据库 (/Zi)”。
  2. 在链接器节点 -> 常规节点下。将“启用增量链接”设置为“否 (/INCREMENTAL:NO)”。
  3. 在链接器节点 -> 调试节点下。将“生成调试信息”设置为“是 (/DEBUG)”。
  4. 在链接器节点 -> 优化节点下。将“参考”设置为“/OPT:REF”
  5. 在链接器节点 -> 优化节点下。将“启用 COMDAT 折叠”设置为“/OPT:ICF”。

您现在可以在发布构建应用程序中调试和单步调试代码。

注意:设置属性时,请确保您选择了正确的配置和平台(属性页面顶部的组合框)

于 2015-07-27T07:47:14.933 回答