Где .NET Debug.Write() выводит?

Я не видел никаких выходных данных на панели управления консоли или Visual Studio:

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

Где идет выход?

Ответ 1

Он записывает прослушиватель трассировки по умолчанию, который вам нужно включить:

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 при компиляции проекта для включения вывода.

Ответ 2

Ответ Жафи уже сказал вам, как добраться до выхода 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.