c# - Visual Studio : How to get IDebugEngine2 from VS Package (except IVsLoader)

标签 c# visual-studio visual-studio-extensions

是否可以在不使用 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 传递给 WatchForProviderEventsIDebugDefaultPort2 获得code> 传递给 IDebugProgram2 构造函数),我的代码调用 IDebugPortNotify2.AddProgramNode
  • 环境回调我的调试引擎的构造函数

关于c# - Visual Studio : How to get IDebugEngine2 from VS Package (except IVsLoader),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15524038/

相关文章:

c# - 为什么我的 .dll 试图加载 mscorlib.dll?

c# - C# 中对属性的读写是原子的吗?

c# - File.exists 显示文件,即使它不存在

c# - 动态编译 C# 代码而不在内存中堆积程序集

c++ - 在哪台计算机开始认为它为零之后,C 中的最小 double 型数字

c# - 打开一个 WPF 窗口应用程序窗体 VS 扩展命令

c# - 如何将 WicImagingBitmap 转换为 Gdi+ 位图或流?

vb.net - 插入图像到Excel

visual-studio-extensions - 当文档中的插入符号位置发生变化时会触发事件?

c# - 如何使用 Visual Studio 扩展从当前解决方案中收集类型?