2010-03-26 60 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