Console.WriteLine()与Debug.WriteLine()之间有什么区别?

时间:2010-06-10 08:34:22

标签: .net vb.net

Console .WriteLine() Debug .WriteLine()之间的区别是什么?

3 个答案:

答案 0 :(得分:87)

Console.WriteLine在调试或发布中写入标准输出流。 Debug.WriteLine写入Listeners集合中的跟踪侦听器,但仅在调试时运行。在发布配置中编译应用程序时,Debug元素将不会编译到代码中。

Debug.WriteLine写入Listeners集合中的所有跟踪侦听器时,可能会在多个位置输出(Visual Studio输出窗口,控制台,日志文件,第三个 - 注册听众的派对应用程序(我相信DebugView会这样做),等等。)

答案 1 :(得分:33)

Console.WriteLine()适用于控制台模式程序。 Visual Studio托管过程的一个很好的功能使其输出显示在Visual Studio输出窗口中,同时调试没有控制台的进程。这在调试时非常有用,但请注意,当您准备创建Release版本时,应该删除此代码(或用#ifdef DEBUG包装它)。否则会给您的程序增加不必要的开销。这使得它不太适合调试跟踪。

如果使用Debug.WriteLine()条件#defined构建,

DEBUG会生成跟踪信息。默认情况下,这在Debug版本中是打开的。输出结束的位置可以在app.exe.config文件中配置。如果未覆盖此配置,.NET将自动提供DefaultTraceListener类的实例。它将带有Windows Debug.WriteLine() API函数的OutputDebugString()文本发送到调试器。 Visual Studio调试器使其显示在“输出”窗口中,就像Console.WriteLine()

一样

Debug.WriteLine()的一个明显优势是它在Release版本中不产生任何开销,有效地删除了调用。但是它不支持复合格式,您需要String.Format()。对于调试跟踪,应该选择Debug类。

答案 2 :(得分:16)

如果您使用Console.WriteLine的目的仅用于调试,那么您 更好地使用Debug.WriteLine

如果您想向用户显示消息,请使用Console.WriteLine

Debug.WriteLine仅用于调试应用程序。在 发布模式将忽略调试语句。

控制台应用程序的另一个用途是测试私有程序集。您可以简单地将DLL重新构建为控制台应用程序并从/向控制台输入/输出,而不是创建某种GUI测试工具来测试DLL的编译版本的传统方法。我发现这种技术比花时间创建GUI测试工具更快。