Подтвердить что ты не робот

Где появляется сообщение System.Diagnostics.Debug.Write?

Следующая программа С# (построенная с помощью csc hello.cs) печатает только Hello via Console! на консоли и Hello via OutputDebugString в окне DebugView. Однако я не вижу ни одного из вызовов System.Diagnostics.*. Почему это?

using System;
using System.Runtime.InteropServices;
class Hello {
    [DllImport("kernel32.dll", CharSet=CharSet.Auto)]
    public static extern void OutputDebugString(string message);

    static void Main() {
        Console.Write( "Hello via Console!" );
        System.Diagnostics.Debug.Write( "Hello via Debug!" );
        System.Diagnostics.Trace.Write( "Hello via Trace!" );
        OutputDebugString( "Hello via OutputDebugString" );
    }
}

Возможно, существуют специальные ключи командной строки для csc?

Я не использую Visual Studio для какой-либо моей разработки, это чистая команда.

4b9b3361

Ответ 1

Как отмечали другие, слушатели должны быть зарегистрированы, чтобы читать эти потоки. Также обратите внимание, что Debug.Write будет работать, только если установлен флаг сборки DEBUG, а Trace.Write будет работать, только если установлен флаг сборки TRACE.

Установка флагов DEBUG и/или TRACE легко выполняется в свойствах проекта в Visual Studio или путем предоставления следующих аргументов csc.exe

/define:DEBUG;TRACE

Ответ 2

Пока отладка System.Diagnostics.Debug.WriteLine будет отображаться в окне вывода (Ctrl + Alt + O), вы также можете добавить TraceListener в коллекцию Debug.Listeners, чтобы указать Debug.WriteLine вызовы на вывод в других местах.

Примечание: вызовы Debug.WriteLine не могут отображаться в окне вывода, если у вас есть опция Visual Studio "Перенаправить все текст окна вывода в окно" Немедленное "в меню" Сервис "→" Параметры "→" Отладка "→" Общие ". Чтобы отобразить" Инструменты → Параметры → Отладка ", установите флажок" Инструменты → Параметры → Показать все настройки".

Ответ 3

Вам нужно добавить TraceListener, чтобы увидеть их на консоли.

TextWriterTraceListener writer = new TextWriterTraceListener(System.Console.Out);
Debug.Listeners.Add(writer);

Они также появляются в окне вывода Visual Studio в режиме Debug.

Ответ 4

Пока вы отлаживаете Visual Studio, отобразите окно "Выход" (View- > Output). Он покажет там.

Ответ 6

Когда я пишу debug.write( ") в коде, он выводится в" Немедленное окно ", а не" Окно вывода".

Вы можете попробовать. Для отображения окна "Немедленное" (Debug → Window → Immediate).

Ответ 7

Решение для моего случая:

  • Щелкните правой кнопкой мыши окно вывода;
  • Проверьте "Выход программы"

Ответ 8

Для VB.NET применяется следующее. Вы должны выбрать "Отладка" и убедитесь, что вы "Начните отладки". Этого можно достичь, нажав F5.

Также Console.WriteLine будет отображать сообщения только при создании как "Release" в окне вывода.

Как уже упоминалось ранее, откройте окно "Выход" с помощью "Вид" → "Выход" и обязательно выберите "Сборка", если вы хотите видеть сообщения Console.WriteLine или "Отладка", если вы хотите видеть сообщения Debug.WriteLine или Trace.WriteLine.