在VS2013中选择“调试”或“发布”解决方案配置有什么区别?

时间:2014-03-31 06:51:21

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

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

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

我被告知"调试"模式很慢。有人可以解释将我的解决方案配置(顶层菜单下拉菜单)设置为" debug&#34 ;?的优点是什么?它给我带来了哪些额外的调试功能?

2 个答案:

答案 0 :(得分:2)

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

然而,还有更多:编译器不会优化或内联您的代码,而这些代码可以"影响表现。通常,不建议部署调试版本。

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

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

答案 1 :(得分:2)

直接来自Microsoft

  • 程序的Debug配置使用完整的符号调试信息进行编译,无需优化。优化使调试变得复杂,因为源代码和生成的指令之间的关系更复杂。

  • 程序的Release配置不包含符号调试信息,并且已完全优化。可以在PDB文件中生成调试信息,具体取决于所使用的编译器选项。如果以后必须调试发行版本,则创建PDB文件非常有用。

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