Как перехватить отладочную информацию (стиль Debugview) в C #? - PullRequest
3 голосов
/ 15 декабря 2008

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

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

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

Ответы [ 2 ]

5 голосов
/ 17 декабря 2008

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

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

1 голос
/ 15 декабря 2008

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

...