什么是VS Debug
.WriteLine()
Console
.WriteLine()
之间的区别?Console.WriteLine()与Debug.WriteLine()之间有什么区别?
回答
Console.WriteLine写入标准输出流,无论是在调试或发布。 Debug.WriteLine写入Listeners集合中的跟踪侦听器,但仅在调试时运行。当应用程序在发布配置中编译时,Debug元素将不会被编译到代码中。
至于Debug.WriteLine
写入Listeners集合中的所有跟踪监听器,它是可能的,这可能是在多个地方输出(Visual Studio的输出窗口,控制台,日志文件的第三方应用程序,注册一个监听器(我相信DebugView这样做)等)。
Console.WriteLine()
是用于控制台模式程序。 Visual Studio托管过程的一个很好的功能使其输出出现在Visual Studio输出窗口中,同时调试没有控制台的进程。这在调试时非常有用,但要注意,当您准备创建发布版本时,应该删除此代码(或将其包含在#ifdef DEBUG
中)。否则会给你的程序增加不必要的开销。这使得它不太适合调试跟踪。
Debug.WriteLine()
如果使用条件#defined创建DEBUG
,则会生成跟踪信息。在Debug版本中默认处于打开状态。输出结束的位置可以在app.exe.config
文件中配置。如果这个配置没有被覆盖,.NET会自动提供一个DefaultTraceListener
类的实例。它将Debug.WriteLine()
文本与Windows OutputDebugString()
API函数一起发送给调试器。 Visual Studio调试器使其显示在输出窗口中,就像Console.WriteLine()
一样。
Debug.WriteLine()
的一个明显的优点是它在Release版本中不产生任何开销,这些调用被有效地移除。但是它不支持复合格式,因此您需要String.Format()
。对于调试跟踪,Debug类应该是您的选择。
如果您的使用Console.WriteLine的目的仅仅是为了调试,您的 更好地使用Debug.WriteLine。
如果您想向用户显示消息,您可以使用Console.WriteLine。
Debug.WriteLine仅用于调试您的应用程序。在 发布模式下,您的调试语句将被忽略。
控制台应用程序的另一个用法是测试私人程序集。而不是创建某种GUI测试工具来测试DLL的编译版本的传统方法,您可以简单地重新构建DLL作为控制台应用程序以及从控制台输入/输出。我发现这种技术比花费时间创建GUI测试工具更快。
“如果你想向用户显示一条消息,你可以使用console.writeline。“这可能会让一些人感到困惑,因为如果在控制台应用程序中执行,它只会向用户显示某些内容。 – 2011-05-03 15:19:46
- 1. Console.writeline()/trace.writeline()之间的区别
- 2. DesiredCapabilities与RequiredCapabilities之间有什么区别?
- 3. gets.chomp()与STDIN.gets.chomp()之间有什么区别?
- 4. 设置Console.WriteLine&Debug.WriteLine
- 5. Console.WriteLine('single quote');有什么区别?和Console.WriteLine(“双引号”);
- 6. “层”和“层”之间有什么区别?
- 7. Tableau和QlikView之间有什么区别
- 8. Microsoft.CompilerServices.AsyncTargetingPack和Microsoft.Bcl.Async之间有什么区别?
- 9. @Entity和@embeddable之间有什么区别
- 10. ContentObservable和DataSetObservable之间有什么区别?
- 11. touchmove和gesturechange之间有什么区别?
- 12. 这两行之间有什么区别?
- 13. :notification.flags和notification.defaults之间有什么区别?
- 14. proc和lambda之间有什么区别?
- 15. :: after和after之间有什么区别?
- 16. read()和io.read()之间有什么区别?
- 17. Request()和Request.Form()之间有什么区别?
- 18. WebServiceBinding.EmitConformanceClaims和WebServiceBinding.ConformanceClaims之间有什么区别?
- 19. getA()和this.getA()之间有什么区别?
- 20. (int)和intval()之间有什么区别?
- 21. set_value和= pandas之间有什么区别
- 22. * zoom和zoom之间有什么区别?
- 23. {0}和“”之间有什么区别?
- 24. typedef和using之间有什么区别?
- 25. “”和“'之间有什么区别?
- 26. STDIN和tty之间有什么区别?
- 27. +和%之间有什么区别?
- 28. sysfs_create_file()和sysfs_create_group()之间有什么区别?
- 29. Lazy.Force()和Lazy.Value之间有什么区别
- 30. -existingObjectWithID:error:和-objectWithID之间有什么区别?
严格地说,DebugView监视通过本地Windows API调用'OutputDebugString'(和'DebugPrint')记录的消息。 'DefaultTraceListener'写入'OutputDebugString',这就是DebugView看到输出的原因。 http://msdn.microsoft.com/en-us/library/system.diagnostics.defaulttracelistener.aspx – MarkJ 2010-06-10 12:05:51