在Visual Studio中,生成应用程序的时候有2种模式:Debug和Release。两者之间如何取舍呢?

假设有这么简单的一段代码,在主程序中调用方法M1,M1方法调用M2方法,M2方法调用M3方法,M3方法中抛出异常。

    class Program
    {
        static void Main(string[] args)
        {
            M1();
            Console.ReadKey();
        }

        static void M1()
        {
            M2();
        }

        static void M2()
        {
            M3();
        }

        static void M3()
        {
            throw new Exception("error");
        }
    }

选择"Debug"模式,把断点打在Console.ReadKey();代码行。运行,并通过依次点击"调试→窗口→调用堆栈",显示"调用堆栈"窗口信息,如下:

选择"Release"模式,再调试,显示如下:

从堆栈信息可以看出:在Debug模式和Release模式下调试,Debug模式消耗更多的内存,所以运行较慢;而Release模式作了一些优化,消耗较少的内存,所以运行更快。

在实际情况中,应该把在Release模式下生成的应用程序部署到服务器上,因为Remease下生成的应用程序作了优化处理,相对Debug下生成的应用程序,运行更快。

另外,如果我们想让一段代码只在Debug模式下运行,可以使用Debug标记这样写:

#if DEBUG
 Console.WriteLine(DateTime.Now);
#endif

总的来说:
1、Release模式相比Debug模式,做了更多的优化,更适合在项目完成后部署到服务器上。而Debug模式更适合在调试的时候使用。
2、使用Debug标记的代码,在Release模式下会被自动删除。

Visual Studio中Debug和Release的区别的更多相关文章

  1. Visual Studio中Debug与Release以及x86、x64、Any CPU的区别

    Visual Studio中Debug与Release的区别: 在Visual Studio中,编译模式有2种:Debug与Release.这也是默认的两种方式,在新建一个project的时候,就已经 ...

  2. Visual Studio中Debug与Release以及x86、x64、Any CPU的区别 &&&& VS中Debug与Release、_WIN32与_WIN64的区别

    本以为这些无关紧要的 Debug与Release以及x86.x64.Any CPU 差点搞死人了. 看了以下博文才后怕,难怪我切换了一下模式,程序就pass了.... 转载: 1.https://ww ...

  3. vs中debug和release的区别你知道吗

    在Visual Studio中,生成应用程序的时候有2种模式:Debug和Release.两者之间如何取舍呢? 一.vs中debug和release的区别 1.Debug 通常称为调试版本,它包含调试 ...

  4. Visual Studio 中 Build 和 Rebuild 的区别

    因为之前写的程序比较小,编译起来比较快,所以一直都没有太在意 Build 和 Rebuild 之间的区别,后来发现两个还是有很大不同. Build 只针对在上次编译之后更改过的文件进行编译,在项目比较 ...

  5. C++中debug和release的区别 . 转载

    vc中debug和release的不同 收藏  在使用VC开发软件的过程中,正当要享受那种兴奋的时候突然发现:release与debug运行结果不一致,甚至出错,而release又不方便调试,真的是当 ...

  6. Android Studio中debug和release模式默认的参数配置

    The possible properties and their default values are: debuggable:表示是否可以在手机上调试程序. 在Eclipse中,只有android ...

  7. Visual Studio Debug和Release的区别及obj的作用

    一.Debug和Release的区别      1.Debug:调试版本,包含调试信息,所以容量比Release大很多,并且不进行任何优化(优化会使调试复杂化,因为源代码和生成的指令间关系会更复杂), ...

  8. 在Visual Studio中使用Debug Visualizers在C++中实现对原始类的自定义调试信息显示

    在Visual Studio中使用Debug Visualizers在C++中实现对原始类的自定义调试信息显示 当我们在VS的C++中使用vector.list.map等这些STL容器,在开启调试的时 ...

  9. VS中Debug与Release、_WIN32与_WIN64的区别

    一.Debug与Release 1.  区别 Debug——调试版,生成的.exe中包含很多调试信息,若直接发包,比较大: Release——发布版 2.  如何区分是Debug编译还是Release ...

随机推荐

  1. SQLServer 查看备份进度

    SELECT   DB_NAME(er.[database_id]) [DatabaseName],  er.[command] AS [CommandType],  er.[percent_comp ...

  2. 20155225 2006-2007-2 《Java程序设计》第四周学习总结

    20155225 2006-2007-2 <Java程序设计>第四周学习总结 教材学习内容总结 对"是一种"语法测试几次之后,总结一句:满足"是一种" ...

  3. MIT6.006Lec02:DocumentDistance

    MIT6.006是算法导论,Lec02讲的是Document Distance(文档距离),比如比较两个文档相似度或者搜索引擎中都会用到. 计算步骤为: 1.将每个文档分离为单词 2.统计词频 3.计 ...

  4. maven:missing artifact jdk.tools:jar:1.7

    http://stackoverflow.com/questions/11118070/buiding-hadoop-with-eclipse-maven-missing-artifact-jdk-t ...

  5. day7异常处理

    异常处理 下面看一个简单例子: data = {} try: data["name"] except KeyError as e: #e是错误的相信信息,错误的原因 print(& ...

  6. 【Codechef】Chef and Bike(二维多项式插值)

    something wrong with my new blog! I can't type matrixs so I come back. qwq 题目:https://www.codechef.c ...

  7. C#实现盛大盛付通充值卡状态查询

    今天有这样一需求,要求能够查询盛付通卡的状态,官网如下 http://www.801335.com/status/index.htm 刚一打开网址,发现两个输入框加一个验证码,心中一喜不是小  cas ...

  8. 007 Ajax中的购物车

    1.大纲设计 2.shopingCartItem.java package beans; public class shopingCartItem { private String bookname; ...

  9. 【知了堂学习笔记】java 编写几种常见排序算法

    排序的分类: 一.交换排序 所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动. 1.冒泡 ...

  10. Redis和MySQL数据一致中出现的几种情况

    1. MySQL持久化数据,Redis只读数据 redis在启动之后,从数据库加载数据. 读请求: 不要求强一致性的读请求,走redis,要求强一致性的直接从mysql读取 写请求: 数据首先都写到数 ...