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

标签 c# debugging testing trace

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

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

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

最佳答案

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

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

关于c# - 如何在 C# 中拦截调试信息(Debugview 样式)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/367966/

相关文章:

php - Magento 调试环境

java - 为什么 EclEmma 不使用 @RunWith(PowerMockRunner.class) 的测试覆盖代码

c# parallel foreach 循环查找索引

c# - 我是在延迟加载这些属性吗?

c++ - Qt - 意外的 GDB 退出

angular - 升级到 Karma 2.0.0 后 ng 测试不起作用

java - 依赖注入(inject): templates (/generics) or virtual functions?

c# - 我的 PDF 语法坏了!如何将图像放入PDF?

c# - 为什么我需要在程序逻辑中枚举我的列表才能在这种情况下工作?

ios - NSDictionary 被视为 bool 值 - 无法调试