代码之家  ›  专栏  ›  技术社区  ›  glenatron

如何在C#中截取调试信息(Debugview样式)?

  •  3
  • glenatron  · 技术社区  · 17 年前

    出于测试的目的,我计划组装一个小应用程序,它将监听来自某个应用程序的特定事件,并在此时与之交互。

    考虑到我们正处于测试过程中,更改应用程序代码是不可能的,从我的观点来看,理想的做法是倾听来自应用程序的调试跟踪,有点像debugview,并对此做出响应。

    有人能提供如何最好地进行这项工作的指导吗?

    2 回复  |  直到 17 年前
        1
  •  5
  •   Ryan P    17 年前

    我找到的方法是使用 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;
             }
         }
    

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

        2
  •  1
  •   Arnout    17 年前

    是要使用标准跟踪的应用程序 System.Diagnostics -基于数据的跟踪?在这种情况下,你可以建立自己的 TraceListener .