2013-02-25 57 views
0

我正在嘗試編寫允許附加到前一個調試會話中選擇的進程的Visual Studio程序包。基本上,我知道如何附加進程:如何獲取調試器在上次調試會話期間附加到的進程

var dte = GetGlobalService(typeof(DTE)) as DTE2; 
if (dte != null) 
{ 
    IList<Process2> processes = 
     dte.Debugger.LocalProcesses.Cast<Process2>() 
      .Where(process => process.Name.IndexOf("process.exe", StringComparison.Ordinal) != -1) 
      .ToList(); 
    foreach (var p in processes) 
    { 
     p.Attach(); 
    } 
} 

問題是,如何獲得我上次已附加的進程?有沒有關於此的任何信息?如果不是,如何編寫幫助我的邏輯?

回答

1

IVsDebuggerEvents(Microsoft.VisualStudio.Shell.Interop.dll)提供通知時,同時IDebugEventCallback2(Microsoft.VisualStudio.Debugger.Interop.dll)用於由調試引擎發送調試事件調試器改變模式。這些接口的使用將允許收集所需的信息。

UPDATE: 它顯示在那裏我已經寫Visual Studio extension它允許調試器附加到以前調試的進程我的github倉庫怎麼做詳細的例子。

0

我不知道任何這樣的信息。 可能工作的另一種方法是向每個 進程添加WCF服務。該服務將使您能夠啓動調試器, 並且還可以檢查調試器是否已經啓動。

public class DebugService : IDebugService 
    { 
     public void LaunchDebugger() 
     { 
      //TODO - write some code indicating that this 
      //process was bebugged. e.g. - mark a flag in DB or file 
      Debugger.Launch(); 
     } 

     public bool WasDebuggedLastTime() 
     { 
      //TODO - write code to check if this process was debugged 
     } 

    } 
+0

這不是我的選擇。 – jwaliszko 2013-02-25 14:36:01

相關問題