2013-02-25 59 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

相关问题