是否可以在不使用 IVsLoader
方法的情况下从 Visual Studio 包中获取 IDebugEngine2
( MSDN ) 的列表或特定实例(描述 here ) ?
通常我希望大多数服务都可以通过 GetService
直接或通过其他一些服务获得。但是我无法轻易找到任何可以提供调试引擎的东西。
最佳答案
你想用它做什么?调试器界面极度脆弱。通常有 2、3 种或更多可能的方法来使用调试器接口(interface)执行操作,但特定的 DE 实现仅支持其中一种。 调试引擎实现者不希望从除 Visual Studio 本身以外的任何地方直接调用他们的调试引擎接口(interface),如果您尝试这样做,破坏调试器功能的风险介于非常高和有保证之间。
例如,以下是告诉 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 ,调试引擎由 session 管理器使用以下堆栈创建:
- 我的代码调用
IVsDebugger2.LaunchDebugTargets2
- 环境回调我的
IDebugProgramProvider2.WatchForProviderEvents
实现
- 创建
IDebugProgram2
的新实例后(IDebugProcess2
的副本从 VS 传递给WatchForProviderEvents
的IDebugDefaultPort2
获得code> 传递给IDebugProgram2
构造函数),我的代码调用IDebugPortNotify2.AddProgramNode
- 环境回调我的调试引擎的构造函数
关于c# - Visual Studio : How to get IDebugEngine2 from VS Package (except IVsLoader),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15524038/