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

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

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

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

2 ответа

Решение

Я нашел способ сделать это, используя инструменты 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;
         }
     }

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

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

Другие вопросы по тегам