2010-02-01 53 views
3

我有一个VSPackage,我希望在调试模式下(当前上下文的变量值)获得类似于本地窗口中显示的信息的VSPackage。Visual Studio软件包 - 如何获取当地人窗口中的信息?

我一直在试验DTE.Debugger.CurrentStackFrame实例,它看起来很有趣,因为它暴露了参数和本地表达式集合。但是,我无法看到将表达式的值作为对象获取的方式--Value属性似乎只是ToString值。

回答

5

作为一个对象来看价值是不可能的。主要是因为这个值与你的VS包在相同的过程中不存在。它存在于堕落过程中。 Visual Studio调试器必须通过CLR API来操作该值。您可以做的最好的方法是获取VS Package中的字符串值。

+0

调试器不公开此信息吗?我期望有一个中央存储,各种调试视图与交互(即本地,观察,立即窗口以及悬停在代码中的变量上)。另外,你能否详细说明你提到的CLR API? – 2010-02-02 10:47:05

+1

@Alan,Visual Studio调试器公开此信息的视图,但不显示底层数据。 VS调试器本身实际上并不知道这些值是什么,而是依赖于语言特定的表达式评估器(EEs)来与实际的恶意进程进行交流。基本上VS要求每个EE给出当前的一组作为IDebugProperty对象返回的本地人。 VS调试器可以使用这个接口来检查这些值,但它实际上并不会返回原始调试器对象。 CLR API是ICorDebug API – JaredPar 2010-02-02 17:44:38

+0

感谢您的详细回复Jared。我感谢您的帮助。 – 2010-02-03 09:05:43

0

您可以使用Visual Studio Visualizer访问实际对象。信息可以找到here

+1

或者可以在以下位置找到展示器上的示例:http://www.codeproject.com/KB/trace/ImageVisualizer.aspx – 2011-10-19 03:17:41

相关问题