Следующая программа C # (построенная с 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 ни для каких моих разработок, это чисто командная строка.
Ответы:
Как уже отмечали другие, слушатели должны быть зарегистрированы, чтобы читать эти потоки. Также обратите внимание, что
Debug.Write
будет работать только если установленDEBUG
флаг сборки, аTrace.Write
будет работать только если установленTRACE
флаг сборки.Установка флагов
DEBUG
и / илиTRACE
легко выполняется в свойствах проекта в Visual Studio или путем предоставления следующих аргументов в csc.exeисточник
Хотя отладка
System.Diagnostics.Debug.WriteLine
будет отображаться в окне вывода ( Ctrl+ Alt+ O), вы также можете добавитьTraceListener
вDebug.Listeners
коллекцию, чтобы указатьDebug.WriteLine
вызовы для вывода в других местах.Примечание:
Debug.WriteLine
вызовы могут не отображаться в окне вывода, если у вас установлен флажок Visual Studio «Перенаправить весь текст окна вывода в окно немедленного действия» в меню « Инструменты» → « Параметры» → « Отладка» → « Общие» . Чтобы отобразить « Инструменты → Параметры → Отладка », установите флажок рядом с « Инструменты → Параметры → Показать все настройки ».источник
Вам нужно добавить,
TraceListener
чтобы они появлялись на консоли.Они также появляются в окне вывода Visual Studio в режиме отладки.
источник
OutputDebugString()
и (ядро)DbgPrint().
Debug.Write()
если его настройки Capture включают «Global Win32» - что требует запуска его в режиме администратора.Во время отладки в Visual Studio откройте окно «Вывод» («Просмотр»> «Вывод»). Это покажет там.
источник
Диагностические сообщения отображаются в окне вывода.
источник
Когда я пишу debug.write ("") в коде, он выводится в "Немедленном окне", а не "Окно вывода".
Можешь попробовать. Для отображения окна «Немедленно» (« Отладка» → « Окно» → « Немедленно» ).
источник
Решение для моего случая:
источник
Для VB.NET действует следующее. Вы должны выбрать «Debug» и убедиться, что вы «Start Debugging». Это может быть достигнуто нажатием F5.
Также Console.WriteLine будет отображать сообщения только при сборке как «Release» в вашем окне вывода.
Как упоминалось ранее, откройте окно Вывод с помощью View → Output AND и убедитесь, что вы выбрали либо «Build», если вы хотите видеть сообщения Console.WriteLine, либо «Debug», если вы хотите видеть сообщения Debug.WriteLine или Trace.WriteLine.
источник