有没有办法在Visual Studio包中访问托管调试器

时间:2011-09-16 23:12:46

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

我正在尝试编写一个Visual Studio包,在调试过程中显示一个实时对象图。

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

我知道可以使用WinDbg / SOS,但这不是我的选择,因为我希望能够很好地使用它。

我非常感谢任何信息!

编辑:

我的要求主要是那些:

  1. 在调试器处于中断模式时获取当前堆栈帧的所有对象。
  2. 获取给定对象(即其字段)引用的所有对象。
  3. 唯一标识一个对象,以便当多个对象引用同一个对象时,有一种方法可以检测到它只引用了一个对象。
  4. 连接VS调试器时执行所有操作,使用其他调试器有效杀死...
  5. 到目前为止我发现了什么:

    • EnvDTE.Debugger不符合要求2和3
    • 调试器可视化工具不起作用,因为它可以处理可序列化对象
    • WinDbg不起作用,因为它需要专门附加到该过程。

2 个答案:

答案 0 :(得分:1)

并非我知道...如果我理解你的要求这是一个艰难的要求 - 你必须以某种方式将EnvDTE.DebuggerDebugger5CLR Profiler结合起来(随附源代码!):

答案 1 :(得分:0)

根据Simon Mouriers的评论,我会选择manually serialized Debugger Visualizer approach

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