3

出于测试目的,我计划制作一个小应用程序,该应用程序将侦听来自应用程序的特定事件并在那时与之交互。

鉴于我们在测试过程中无法更改应用程序代码,从我的角度来看,理想的做法是听取应用程序的调试跟踪,有点像 debugview 所做的,并做出响应到那个。

任何人都可以就如何最好地解决这个问题提供指导吗?

4

2 回答 2

5

我发现这样做的方式是使用 Microsoft 的Mdbg 工具,让我可以从运行时访问核心调试信息。我正在使用的代码的基本形状如下所示:

 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;
         }
     }

无论如何,它似乎足以满足我的需要,也许它会为其他发现自己处于同一条船上的人提供有用的模板。

于 2008-12-17T12:27:13.673 回答
1

您要使用System.Diagnostics基于标准的跟踪来跟踪的应用程序吗?在这种情况下,您可以构建自己的TraceListener

于 2008-12-15T11:00:37.717 回答