2010-03-26 27 views
16

我沒有看到從控制檯的任何輸出或Visual Studio的輸出面板:.NET的Debug.Write()輸出到哪裏?

Debug.Write("WriteStatements() was reached") 

哪裏輸出去了?

+2

如果在Visual Studio的* Output *窗口中看不到輸出,請確保您已在下拉列表中選擇*顯示來自Debug *的輸出。 – 2010-03-26 09:45:53

回答

15

其寫入默認跟蹤監聽器,你需要打開:

Debug.Write Method

如果你想這個定向到控制檯,你將需要添加的一個實例ConsoleTraceListener

在你的config文件確保您有以下條目:

<configuration> 
    <system.diagnostics> 
    <trace autoflush="false" indentsize="4"> 
     <listeners> 
     <add name="configConsoleListener" 
      type="System.Diagnostics.ConsoleTraceListener" /> 
     </listeners> 
    </trace> 
    </system.diagnostics> 
</configuration> 

在編譯項目以啓用輸出時,您可能還需要確保包含/d:TRACE標誌。

+1

沒有默認監聽器? – Ricky 2010-03-26 09:21:31

+1

@Ricky有一個DefaultTraceListener(http://msdn.microsoft.com/en-us/library/system.diagnostics.defaulttracelistener.aspx),它將顯然「將消息發送到Win32 OutputDebugString函數和調試器。 Log方法有關OutputDebugString函數的信息,請參閱Platform SDK或MSDN「,但您希望在Console/Output窗口中找到它,該窗口需要ConsoleTraceListener。 – 2010-03-26 09:27:33

+0

直到我發佈了我的答案纔看到您的評論,對不起。 – 2010-03-26 09:37:33

16

Zhaph的回答已經告訴你一種方法來得到Debug.Write的輸出。

在引擎蓋下,Debug.Write的默認偵聽器,即System.Diagnostics.DefaultTraceListener,調用Windows API函數OutputDebugString

任何傳遞給該函數的消息都可以由調試器顯示,例如,您將在Visual Studio的輸出窗口中看到輸出。

另一種非常簡單的方法來查看Debug.Write和/或Trace.Write輸出是使用DebugView,從Sysinternals的工具:

的DebugView是一個應用程序,讓 您監控本地 系統上調試輸出,或者您可以通過TCP/IP訪問的網絡 上的任何計算機。它能夠顯示內核模式 和Win32調試輸出的 ,讓你不 需要一個調試器來捕捉調試 輸出應用程序或設備驅動程序 產生,你也不需要 修改應用程序或驅動程序到 使用非標準調試輸出API。

請注意,Debug.Write語句不會包含在發佈版本中,因此您只能看到Debug版本中的輸出。

+1

+1對於DebugView :) – 2011-02-14 16:09:24

+0

我不得不說,在調試測試時,這是一個驚人的工具。有時你需要看到沒有運行調試器的輸出。謝謝德克! – 2016-02-12 13:53:00