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

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

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

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

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

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

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