是否可以从Visual Studio包中获取IDebugEngine2
(MSDN)的列表或特定实例,而不使用IVsLoader
方法(描述为here)?
通常情况下,我希望通过GetService
直接或通过其他服务提供大多数服务。但我不能轻易找到任何可以提供调试引擎的东西。
答案 0 :(得分:2)
你想用它做什么?调试器接口极易碎。通常有两种,三种或更多种可能的方式来使用调试器接口执行操作,但特定的DE实现仅支持其中一种。 调试引擎实现者不希望从Visual Studio本身以外的任何地方直接调用他们的调试引擎接口,并且如果你尝试它,则破坏调试器功能的风险介于非常高和保证之间。
例如,以下是告诉DE启动和/或附加到流程的一些潜在方法:
IDebugEngineLaunch2.LaunchSuspended
IDebugPortEx2.LaunchSuspended
IDebugProgramEx2.Attach
IDebugProgramNode2.Attach_V7
IDebugProgramNodeAttach2.OnAttach
IDebugEngine2.Attach
IVsDebuggableProjectCfg.DebugLaunch
VsShellUtilities.LaunchDebugger
IVsDebugger2.LaunchDebugTargets
IVsDebugger2.LaunchDebugTargets2
编辑1:对于我的Java debugger,会话管理器使用以下堆栈创建调试引擎:
IVsDebugger2.LaunchDebugTargets2
IDebugProgramProvider2.WatchForProviderEvents
IDebugProgram2
的新实例(从传递给IDebugProcess2
的VS IDebugDefaultPort2
获取的WatchForProviderEvents
副本传递给IDebugProgram2
构造函数),我的代码调用IDebugPortNotify2.AddProgramNode
答案 1 :(得分:-1)
我最近正在调查同一问题,最终发现您可以通过ILocalRegistry3.CreateInstance
轻松地做到这一点!
有关更多信息,请参阅我的帖子here