debug和release的区别

  • Post author:
  • Post category:其他


我们在使用Visual Studio编译cpp代码时,会有debug和release两种模式,那么这两种模式有什么区别呢?


先说结论:



一般在开发过程中,我们往往写的代码会有bug,为了便于调试,会选择debug模式进行编译,目的是不让编译器进行编译优化或者优化的少一些;但在开发完需要发布版本的时候,为了使生成的机器代码更快的运行,往往会选择release模式,这样编译器就会尽可能的帮我们进行编译优化。

下面来解释为什么

例如,我们写了一段代码,计算从0加到999的值,如果不使用编译器优化,那么生成的汇编代码如右半部分所示。

int main()
{
    int res;
    for(int i=0; i<1000; i++)
    {
        res += i;
    }
    return res;
}

在这里插入图片描述

但是,如果使用了

-O3

级别的编译器优化(数字越大,优化级别越高),那么生成的汇编代码就变成了如下所示。因为编译器分析发现这段代码就是返回499500这个值,所以会优化成这样的汇编代码,显然运行速度快很多。但是假如我们需要在for循环内进行debug调试时,编译器会找不到这样的代码,因为汇编代码就没有for循环,所以不会调试。但是没有进行优化的代码就可以在for循环内部进行调试。

在这里插入图片描述

在这里插入图片描述



版权声明:本文为weixin_45298607原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。