捕捉VS局部变量,而在EnvDTE调试(Capture VS local variables whi

2019-08-07 20:38发布

是否有可能捕获的二手当地人和调试窗口中的调试数据,使用EnvDTE的.vsix的Visual Studio扩展? 或者是有可能通过其他方法?

我想创建一个自定义本地窗口中,我们可以修改,以显示我们的一些更重的内容,因为我们喜欢,不牺牲电力用户原来的本地窗口。 理想的解决办法是获取数据被发送到当地人的窗口,所以我可以建立自己的树。

Answer 1:

原来,这其实是很简单的!

DTE dte = (DTE).Package.GetGlobalService(typeof(DTE));
if(dte.Debugger.CurrentStackFrame != null) // Ensure that debugger is running
{
    EnvDTE.Expressions locals = dte.Debugger.CurrentStackFrame.Locals;
    foreach(EnvDTE.Expression local in locals)
    {
        EnvDTE.Expressions members = expression.DataMembers;
        // Do this section recursively, looking down in each expression for 
        // the next set of data members. This will build the tree.
        // DataMembers is never null, instead just iterating over a 0-length list.
    }
}

每个表达式包含:

  • 名称 (字符串)
  • (在当地人窗口中显示的字符串值)
  • 类型 (type字符串名称)
  • (类型是父类型的)
  • 数据成员 (其子(不能为null)的可重复的集合)
  • 的IsValid(布尔)

希望这可以帮助别人寻找做同样的事情!



文章来源: Capture VS local variables while debugging in EnvDTE