2008-12-15 27 views
3

出於測試目的,我打算組合一個小應用程序,該應用程序將偵聽來自應用程序的特定事件並與該應用程序進行交互。如何攔截C#中的調試信息(Debugview樣式)?

鑑於我們處於測試過程中的一個地步,即更改應用程序代碼不存在問題,從我的角度來看,理想情況是從應用程序監聽調試跟蹤,有點像debugview確實並且對此作出迴應。

任何人都可以提供指導如何最好地去做這件事嗎?

回答

4

我發現這樣做的方式是使用微軟的Mdbg tools來讓我從運行時訪問核心調試信息。代碼的基本形狀我使用的是這個樣子的:

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

看來工作不夠好,我需要什麼無論如何,也許它會提供給任何人有用的模板誰發現自己在同一條船。

+0

你在HandleLogMessage中做什麼?它告訴我我無法訪問內部委託LogMessageEventHandler? – Apqu 2015-01-25 15:39:17

1

是否想要使用基於標準System.Diagnostics的跟蹤進行跟蹤的應用程序?在這種情況下,你可以建立你自己的TraceListener