为什么我需要使用.NET编译器的调试模式?

3
我很好奇.NET编译器的调试模式和发布模式之间有什么区别,发现了关于 .NET中debug vs releaserelease与debug行为不同原因的问题。到这个地方我还没有太关注这些编译器模式。现在我会留意了。
我的问题是,假设我正在使用测试框架(NUnit)和TDD,如果我总是在发布模式下编译,是否会遇到任何问题?

你是在说在发布模式下运行还是在发布模式下编译?它们非常不同。 - Jon Skeet
抱歉,我是指编译。我已经更新了问题以反映这一点。谢谢。 - Jamal Hansen
4个回答

5

你正在使用TDD。你编写了测试用例,测试失败了。然后你编写代码来通过测试用例,但是代码仍然失败了。你看着自己编写的代码,却找不到明显的原因为什么会失败。你是继续思考还是启动调试器(使用TestDriven.Net)并逐步执行测试用例?也许我不够聪明,不能总是知道我的代码为什么无法正常工作,但当我遇到困难时,我通常会选择后者。


2

调试模式会关闭许多优化。这意味着当您获得堆栈跟踪时,它将更像原始代码。


1
调试和发布配置之间的一个相当大的区别是,只有在定义了相关符号的情况下,标记为ConditionalAttribute的方法才会被编译。因此,如果使用发布配置进行编译,则不会包括对Debug类方法的调用。
这使您可以在代码中添加断言和将信息转储到控制台的代码,同时确信这些开销不会出现在您的发布代码中。
此外,编辑并继续是一种非常有用的工具,它依赖于从发布版本中省略的元信息。

0

用于调试。

就像tvanfosson所说的,即使你通常不使用调试器(我知道我不会),有时你也需要使用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接