当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何在C#中拦截调试信息(Debugview样式)?》经验,为你挑选了1个好方法。

出于测试目的,我计划将一个小应用程序放在一起,该应用程序将监听来自应用程序的特定事件并在此时与其进行交互.

鉴于我们处于测试过程的某个阶段,改变应用程序代码是不可能的,从我的观点来看,理想的是从应用程序中监听调试跟踪,有点像debugview,并且响应那个.

谁能提供关于如何最好地解决这个问题的指导?



1> glenatron..:

我发现这样做的方式是使用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;
         }
     }

它似乎对我所需要的任何速度都足够好,也许它将为发现自己在同一条船上的任何人提供一个有用的模板.

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有