Visual studio 201X中release与debug版本的区别

旧城等待, 2023-07-12 14:41 116阅读 0赞

笔者的测试环境是vs2017,我们先来看一下ReleaseDebug的这两种配置方案有啥区别
在这里插入图片描述
很明显区别都是优化和调试方面的区别。

顾名思义,Debug主要是为我们在编写程序的时候便于调试程序而配置的方案,而Release主要是为程序发布使用的方案,发布版主要是为用户体验,所以着重于代码的质量以及运行效率等等

在这里插入图片描述
因为该IDE集成的是MSVC,MSVC是微软Windows平台Visual Studio自带的C/C++编译器,上面一连串的参数即是cl命令的参数选项.
在这里插入图片描述
我们再来看一下两个方案下编译出的可执行文件的PE结构,

在这里插入图片描述
很明显,右边Debug版本的多了很多调试信息的节区,而Release版本只保留了.text,.data等这样程序基本运行所必须的关键节区信息。
在这里插入图片描述
在这里插入图片描述
所以必然debug版本的程序比release的程序大很多
我们用最直观的方式,足足大了4倍多。
在这里插入图片描述
下面我们用vs2017调试一下
在这里插入图片描述
用ida打开看一下
在这里插入图片描述
可以看到在Debug模式下有完成的调试信息,以及完整的堆栈框架便于我们分析
在这里插入图片描述
但是Debug版本在ida分析就很混乱,猜想一下或许是因为通常我们分析都是Release版本吧,因为没有一款产品是发布Debug版本的.
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,116人围观)

还没有评论,来说两句吧...

相关阅读

    相关 DebugRelease区别

    Debug版本包括调试信息,所以要比Release版本大很多(可能大数百K至数M)。至于是否需要DLL支持,主要看你采用的编译选项。如果是基于 ATL的,则Debug和Rele

    相关 Debugrelease版本区别

    Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是

    相关 关于vsdebugrelease区别

    遇到 Debug 成功但 Release 失败,显然是一件很沮丧的事,而且往往无从下手。如果你看了以上的分析,结合错误的具体表现,很快找出了错误,固然很好。但如果一时找不出,以