是否可以在不使用方法(在此处描述)的情况下从 Visual Studio 包中获取IDebugEngine2
(MSDN )的列表或特定实例? IVsLoader
通常,我希望大多数服务都可以通过GetService
直接或通过其他服务提供。但是我不能轻易找到任何可以提供调试引擎的东西。
你想用它做什么?调试器接口非常脆弱。通常有 2、3 或更多可能的方式来使用调试器接口执行操作,但特定的 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
IDebugDefaultPort2
WatchForProviderEvents
IDebugProgram2
IDebugPortNotify2.AddProgramNode
我最近正在调查同样的问题,最终发现您可以通过ILocalRegistry3.CreateInstance
!
请在此处查看我的帖子以获取更多信息