为啥可以使用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】:

DebugRelease 只是一个配置名称,调试器现在对哪个用于调试目的一无所知。

在内部它们是平等的。默认属性值是唯一的区别。例如,您可以轻松地手动交换它们以调试优化代码。

【讨论】:

【参考方案2】:

1) 在调试模式下编译器不进行优化,而在发布模式进行优化。在发布模式下,编译器会对代码进行一些低级的更改,从而修改一些代码以实现优化。 2)在调试模式下,我们默认启用的设置很少,有助于生成调试符号和与之相关的文件,如 Map 文件、PDB 等。这些文件对于调试故障转储至关重要。

【讨论】:

以上是关于为啥可以使用Release文件夹下的.exe文件在VC++中调试?的主要内容,如果未能解决你的问题,请参考以下文章

为啥C++的exe文件在另一台计算机无法运行?

vs工程下的各个文件夹的意义

为啥debug编译可以通过,release就无法解析外部符号

golang 环境build之后可执行文件为啥没有在bin生成

为啥我在Ubuntu下无法打开".exe"的文件?

为啥我将java程序用exe4导成exe文件后程序上的图片显示不出来