.NET的Debug.Write()输出到哪里?

时间:2010-03-26 09:15:28

标签: .net

我没有在控制台或Visual Studio的输出面板中看到任何输出:

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

输出到哪里?

2 个答案:

答案 0 :(得分:16)

Zhaph的回答已经告诉你一种方法来获得Debug.Write的输出。

在幕后,Debug.Write的默认侦听器即System.Diagnostics.DefaultTraceListener调用Windows API函数OutputDebugString

传递给该函数的任何消息都可以由调试器显示,例如您将在Visual Studio的输出窗口中看到输出。

查看Debug.Write和/或Trace.Write输出的另一种非常简单的方法是使用来自Sysinternals的工具DebugView

  

DebugView是一个允许的应用程序   您监视本地的调试输出   系统或网络上的任何计算机   您可以通过TCP / IP访问。它是   能够同时显示内核模式   和Win32调试输出,所以你没有   需要一个调试器来捕获调试   输出您的应用程序或设备   驱动程序生成,也不需要   修改您的应用程序或驱动程序   使用非标准的调试输出API。

请注意,Debug.Write语句不会包含在Release版本中,因此您只能在Debug版本中看到输出。

答案 1 :(得分: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标志以启用输出。