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

Перенаправление Console.Write... Методы вывода окна Visual Studio во время отладки

В проекте Консольное приложение в Visual Studio я хочу перенаправить вывод Console в окно Вывод во время отладки. p >

4b9b3361

Ответ 1

Измените тип приложения на Windows перед отладкой. Без окна консоли Console.WriteLine работает как Trace.WriteLine. Не забывайте, что приложение reset вернется к типу консоли после отладки.

Ответ 2

    class DebugWriter : TextWriter
    {        
        public override void WriteLine(string value)
        {
            Debug.WriteLine(value);
            base.WriteLine(value);
        }

        public override void Write(string value)
        {
            Debug.Write(value);
            base.Write(value);
        }

        public override Encoding Encoding
        {
            get { return Encoding.Unicode; }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
#if DEBUG         
            if (Debugger.IsAttached)
                Console.SetOut(new DebugWriter());   
#endif

            Console.WriteLine("hi");
        }
    }

** обратите внимание, что это связано с почти псевдокодом. он работает, но требует работы:) **

Ответ 3

Вы можете изменить его на System.Diagnostics.Debug.Write();

Ответ 4

Обратите внимание, что если вы используете метод dkackman, но хотите записать вывод в BOTH окно консоли и окно отладки, вы можете немного изменить его код следующим образом:

class DebugWriter : TextWriter
{
    //save static reference to stdOut
    static TextWriter stdOut = Console.Out;

    public override void WriteLine(string value)
    {
        Debug.WriteLine(value);
        stdOut.WriteLine(value);
        base.WriteLine(value);
    }

    public override void Write(string value)
    {
        Debug.Write(value);
        stdOut.Write(value);
        base.Write(value);
    }

    public override Encoding Encoding
    {
        get { return Encoding.Unicode; }
    }
}

Ответ 5

Попробуйте Trace.Write и используйте DebugView

Ответ 6

Спасибо, Алекс Ф., хорошее решение, но у меня не получилось, потому что мой проект был создан cmake. Итак, чтобы сделать, как предложил Алекс Ф, добавьте WIN32 или MACOSX_BUNDLE в add_executable

add_executable(target_name WIN32 <source list>)

Или, если вы не можете редактировать CMakeList.txt, вы можете добавить -DCMAKE_WIN32_EXECUTABLE=1 в команду конфигурации cmake.

Ответ 7

На самом деле есть самый простой способ: в окне "Параметры" Visual Studio (из меню "Сервис" ) перейдите к "Отладка", затем установите флажок "Перенаправить все окна окна вывода в окно немедленного доступа".