Можно ли выводить сообщения трассировки в отдельное окно в Visual C # 2008 Express? - PullRequest
10 голосов
/ 24 марта 2010

Все сообщения консоли, отладки и трассировки отображаются в окне «Вывод», что в большинстве случаев нормально, но я бы хотел, чтобы мои сообщения трассировки отображались отдельно (чтобы они не чередовались еще). Есть ли способ сделать это без записи в файл / журнал?

Ответы [ 2 ]

5 голосов
/ 09 июля 2010

Конечно, по умолчанию трассировка записывает в окно вывода с помощью DefaultTraceListener , который является реализацией класса TraceListener .

Чтобы записать в отдельный вывод, вам нужно либо использовать один из предварительно предоставленных альтернативных TraceListener s, либо реализовать свой собственный (обработка, как минимум, Write() и WriteLine(); затем зарегистрировать слушателя в вашем файле конфигурации.

2 голосов
/ 12 июля 2010

В VS доступна только одна опция для получения вывода в другом окне: Инструменты + Параметры, Отладчик, Общие, «Перенаправить весь текст окна вывода в окно немедленного действия». Это, однако, вряд ли будет делать то, что вы хотите.

Хороших опций для вывода в окно VS нет. Единственным механизмом является API-функция Windows OutputDebugString (), которая позволяет отладчику видеть сообщения. Это уже используется DefaultTraceListener. Процесс размещения Visual Studio поддерживает перенаправление вывода Console.Write / Line () в окно вывода. Механизм, с помощью которого он работает, мне неясен, за исключением того, что процесс хостинга представляет собой пользовательскую версию CLR. Не то, что вы хотели бы решить, предполагая, что это даже можно заменить.

Безусловно, самый практичный подход - это просто создать собственное окно для отображения результатов трассировки, используя собственный слушатель трассировки. Достаточно просто сделать это с помощью класса форм Windows Forms, который содержит многострочное TextBox. Насколько это практично, зависит от характера вашего основного EXE-файла. Или проследите до файла и используйте средство просмотра файлов, которое достаточно умен, чтобы увидеть обновления файла. Я использую Far.

Да, и есть утилита SysInternals DebugView . Он отслеживает текст OutputDebugString ().

...