【问题标题】:What is the difference between choosing the "debug" or "release" solution configuration in VS2013? [duplicate]VS2013中选择“debug”或“release”解决方案配置有什么区别? [复制]
【发布时间】:2014-05-10 09:56:30
【问题描述】:

我注意到其他一些关于此的堆栈溢出问题,但似乎没有一个真正解决我想要找出的问题。

我在开发时一直在“调试”模式下运行,但现在我注意到当我在“解决方案配置”中切换到“发布”模式时,我仍然可以设置断点并查看变量的值。

有人告诉我“调试”模式很慢。有人可以解释将我的解决方案配置(顶部菜单下拉菜单)设置为“调试”有什么好处吗?它为我提供了哪些额外的调试功能?

【问题讨论】:

    标签: c# asp.net asp.net-mvc visual-studio


    【解决方案1】:

    最值得注意的是:Debug 配置将在堆栈跟踪中包含行号。

    但是,还有更多:编译器不会优化或内联您的代码,这“可能”会影响性能。一般来说,不建议部署调试版本。

    您可以添加编译器指令,因为(默认情况下)定义了 DEBUG 常量:

    public void Method()
    {
        #if DEBUG
            log("Method invoked");
        #end if
        ...
    }
    

    【讨论】:

    • 有人告诉我“调试”模式会慢一些。这也是你的经历吗?启动应用程序会更慢吗?运行时会更慢吗?
    • 这真的取决于你的解决方案和你运行的代码。如果您只是使用第三方(或框架)代码,则影响非常小。例如,用于 CRUD 操作的实体框架驱动的数据库应用程序:大多数“繁重”的工作和时间花费都在您自己的代码之外完成,不会受到影响。但是,我不会将 Mandelbrot 应用程序部署为 DEBUG。我建议:为客户部署 Release 并为测试人员调试(测试版)
    【解决方案2】:

    直接来自Microsoft

    • 程序的调试配置是使用完整的符号调试信息编译的,没有优化。优化使调试复杂化,因为源代码和生成的指令之间的关系更复杂。

    • 您的程序的发布配置不包含符号调试信息,并且已完全优化。根据使用的编译器选项,可以在 PDB 文件中生成调试信息。如果您以后必须调试发布版本,创建 PDB 文件会非常有用。

    由于缺乏优化,在调试模式下运行的程序可能会有些慢。但是,您不会分发应用程序的调试版本,因此速度通常不是一个重要因素。您只能访问断点,因为 .pdb 文件是在发布模式下生成的,但如果您要删除 .pdb 文件,您将无法再设置断点。此外,由于优化,可能存在断点不起作用的某些代码区域。

    【讨论】:

      猜你喜欢
      • 2016-04-11
      • 1970-01-01
      • 2011-03-05
      • 2010-10-30
      • 1970-01-01
      • 2011-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多