什麼是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