Как перехватить отладочную информацию (стиль Debugview) в C #?

В целях тестирования я планирую собрать небольшое приложение, которое будет прослушивать определенное событие из приложения и взаимодействовать с ним в этот момент.

Учитывая, что в процессе тестирования мы находимся на этапе, когда изменение кода приложения не может быть и речи, с моей точки зрения, идеальным вариантом было бы прослушивание трассировки отладки из приложения, как это делает debugview, и ответ к тому, что.

Может ли кто-нибудь предложить руководство о том, как лучше пойти по этому поводу?

15.12.2008 10:31:23
2 ОТВЕТА

Является ли приложение, которое вы хотите отслеживать, с помощью стандартной System.Diagnosticsтрассировки? В этом случае вы можете создать свой собственный TraceListener .

1
15.12.2008 11:00:37
РЕШЕНИЕ

Я нашел способ сделать это, используя инструменты Mdbg от Microsoft, чтобы дать мне доступ из среды выполнения к основной информации отладки. Основная форма кода, который я использую, выглядит следующим образом:

 MDbgEngine mg;
 MDbgProcess mgProcess;
 try
 {
       mg = new MDbgEngine();
       mgProcess = mg.Attach(debugProcess.Id);
 }
 catch (Exception ed)
 {
       Console.WriteLine("Exception attaching to process " + debugProcess.Id );
       throw (ed);
 }
 mgProcess.CorProcess.EnableLogMessages(true);
 mgProcess.CorProcess.OnLogMessage += new LogMessageEventHandler(HandleLogMessage);
 mg.Options.StopOnLogMessage = true;
 mgProcess.Go().WaitOne();
 bool running = true;
 Console.CancelKeyPress += new ConsoleCancelEventHandler(Console_CancelKeyPress);
  while (running)
   {
       try
       {
           running =mgProcess.IsAlive;
           mgProcess.Go().WaitOne();
        }
        catch
         {
            running = false;
         }
     }

Кажется, он работает достаточно хорошо для того, что мне нужно, во всяком случае, возможно, он предоставит полезный шаблон для всех, кто окажется в той же лодке.

5
18.12.2008 16:30:08
Что вы делаете в HandleLogMessage? это говорит мне, что я не могу получить доступ к внутреннему делегату LogMessageEventHandler?
Apqu 25.01.2015 15:39:17
@ Тур, я боюсь, что это было несколько лет назад и пару версий .Net назад - я даже не мог сказать, что они несколько не изменили поведение этого.
glenatron 25.01.2015 22:27:54