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

Ric*_*cky 17 .net

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

Debug.Write("WriteStatements() was reached")
Run Code Online (Sandbox Code Playgroud)

输出在哪里?

Dir*_*mar 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语句不会包含在Release版本中,因此您只能看到Debug版本中的输出.


Zha*_*uid 15

它会写入默认的跟踪侦听器,您需要打开它:

Debug.Write方法

如果您希望将此指向控制台,则需要添加ConsoleTraceListener的实例:

在.config文件中,请确保您具有以下条目:

<configuration>
  <system.diagnostics>
    <trace autoflush="false" indentsize="4">
      <listeners>
        <add name="configConsoleListener" 
          type="System.Diagnostics.ConsoleTraceListener" />
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>
Run Code Online (Sandbox Code Playgroud)

您可能还需要确保/d:TRACE在编译项目时包含该标志以启用输出.