为啥可以使用Release文件夹下的.exe文件在VC++中调试?
Posted
技术标签:
【中文标题】为啥可以使用Release文件夹下的.exe文件在VC++中调试?【英文标题】:Why can the .exe file under the Release folder be used to debug in VC++?为什么可以使用Release文件夹下的.exe文件在VC++中调试? 【发布时间】:2015-05-08 07:53:40 【问题描述】:我正在使用 Visual C++ 2010 开发 Win32 应用程序(没有 MFC)。当我按 F5 调试我的应用程序时,在 Release 文件夹而不是 Debug 文件夹下生成了一个新的 .exe 文件,因为 项目配置 在当前的活动解决方案配置(即Debug)中,出于某种原因,Release。
我想知道为什么Release文件夹下的.exe文件似乎比Debug文件夹下的要小,但也可以调试。
【问题讨论】:
【参考方案1】:Debug 和 Release 只是一个配置名称,调试器现在对哪个用于调试目的一无所知。
在内部它们是平等的。默认属性值是唯一的区别。例如,您可以轻松地手动交换它们以调试优化代码。
【讨论】:
【参考方案2】:1) 在调试模式下编译器不进行优化,而在发布模式进行优化。在发布模式下,编译器会对代码进行一些低级的更改,从而修改一些代码以实现优化。 2)在调试模式下,我们默认启用的设置很少,有助于生成调试符号和与之相关的文件,如 Map 文件、PDB 等。这些文件对于调试故障转储至关重要。
【讨论】:
以上是关于为啥可以使用Release文件夹下的.exe文件在VC++中调试?的主要内容,如果未能解决你的问题,请参考以下文章
为啥debug编译可以通过,release就无法解析外部符号