发布模式下的断点和调试

Posted

技术标签:

【中文标题】发布模式下的断点和调试【英文标题】:Breakpoints and debug in release mode 【发布时间】:2016-05-04 06:47:20 【问题描述】:

这是我第一次在 VS 中使用发布模式,我一直使用调试模式,我对如何在发布配置中优化代码印象深刻!

但无论如何,我很惊讶即使在发布配置中我仍然可以使用“本地 Windows 调试器”,特别是因为似乎 debug in release mode is not obvious(而在我的情况下,我没有更改任何选项)。所以我的问题是:

    release模式下的“Debug Information Format”设置为/ZI是否正常?我注意到如果我禁用此信息,断点将不再起作用,所以我可能无意中更改了它。

    本地 Windows 调试器 (F5) 在发布模式下的代码执行速度较慢是“不调试就启动”(CTRL+F5)?

【问题讨论】:

【参考方案1】:

1) 没有任何调试信息,断点就无法工作,因为无法将特定代码行与二进制文件中的地址相关联。

(实际上,在二进制文件中的特定指令上放置断点仍然可以,只是将其映射回源代码是不行的。)

如果您将调试信息格式从 /ZI 降低到 /Zi,将启用进一步的优化,但作为回报,某些调试功能(例如实时编辑变量内容)已经不可用。另请参阅https://msdn.microsoft.com/en-us/library/958x11bc.aspx 了解更多详情。

2) 不,只生成调试器通常不会影响性能。

除非实际使用断点和跟踪点,其中最多前 4 个断点在硬件中处理,而后面的所有断点都会带来开销。

跟踪和分析总是会产生开销。

【讨论】:

以上是关于发布模式下的断点和调试的主要内容,如果未能解决你的问题,请参考以下文章

gccrelease模式设置断点

我自己在调试模式下的二进制文件“二进制文件不是用调试信息构建的”

eclipse中的断点调试怎么后退一步?

Javascript 在远程调试模式下停止在没有断点的行

VS在进行调试的时候,加了断点,说,未能进入中断模式,

day3-PyCharm 断点 调试模式