【问题标题】:Is there any way to access the managed debugger in a Visual Studio package有什么方法可以访问 Visual Studio 包中的托管调试器
【发布时间】:2011-09-16 23:12:45
【问题描述】:

我正在尝试编写一个 Visual Studio 包,以在调试期间显示实时对象图。

有没有办法从 VS 2010 包中访问托管调试器的数据?我知道 EnvDTE.Debugger API,但这并没有为我的用例提供足够的数据。

我知道使用 WinDbg/SOS 是可能的,但这对我来说不是一个选项,因为我希望能够很好地集成使用它。

非常感谢任何信息!

编辑:

我的要求基本上是:

  1. 当调试器处于中断模式时,获取当前堆栈帧的所有对象。
  2. 获取给定对象(即其字段)引用的所有对象。
  3. 唯一标识一个对象,以便当多个对象引用同一个对象时,有一种方法可以检测到它只是被引用的一个对象。
  4. 在附加 VS 调试器时执行所有这些操作,这会有效地杀死使用另一个调试器...

到目前为止我发现了什么:

  • EnvDTE.Debugger 不满足要求 2 和 3
  • 调试器可视化工具不起作用,因为它只对可序列化的对象起作用
  • WinDbg 不起作用,因为它需要以独占方式附加到进程。

【问题讨论】:

  • 我很抱歉。我误读了它,因为您出于某种原因想附加调试器。多哈'。删除了我不相关的答案。
  • “但这并没有为我的用例提供足够的数据” - 你能详细说明一下吗?
  • 你看过这个关于调试器可视化器的帖子吗:stackoverflow.com/questions/2959048/…

标签: .net visual-studio-2010 debugging visual-studio-debugging vs-extensibility


【解决方案1】:

我不知道...如果我正确理解您的要求,这是一个艰难的决定 - 您将不得不以某种方式将 EnvDTE.DebuggerDebugger5CLR Profiler 结合起来(带有源代码!):

【讨论】:

    【解决方案2】:

    正如 Simon Mouriers 评论中所建议的,我会选择manually serialized Debugger Visualizer approach

    这是做我想做的唯一合理的方法,虽然我还没有完全验证它。

    【讨论】:

      猜你喜欢
      • 2012-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多