在.NET的JIT调试器中“搜索”对象的成员

时间:2009-09-15 19:54:04

标签: c# .net visual-studio debugging jit

我是现在公司的一名相对较新的员工,所以我在学习软件和架构方面仍然“从消防水管中喝水”。我发现自己在编写单元测试时会处理一些非常大的对象,让我们讨论一下“SavedOrder”,我需要找到在哪里找到我正在寻找的特定数据。

我遇到的问题是,我知道每个SavedOrder都有,它的遗产和成员(有成员,有成员,等等)的内部,数据我我正在寻找。

现在我发现自己盲目地扩展我的手表并将鼠标放在物体上,希望能找到我想要的东西。有没有人知道用于查找此对象是否具有“Type A”或某些值为“SomeEnum.SomeValue”的插件/技术?

编辑:所有好的输入,还没有完全解决我的目标。对象浏览器(对象浏览器和反射器)可以很好地浏览每个对象的成员,但是在将A点连接到D点的目标中,它们实际上只是帮助将A点指向B点或D点到C. / p>

我猜最好描述解决方案的伪c#递归算法将是:

WheresWaldo FindMember(Object o)
{
    foreach(PublicMember member in o)
    {
         if(o.IsType(MyType))
            return Success!;
         else
            return WheresWaldo(member);
    }


}

谁知道,也许不可能。

2 个答案:

答案 0 :(得分:3)

我不确定我是否完全跟随你,但也许你可以使用条件断点。在相关代码上设置断点,右键单击并选择条件断点。从这里开始,您可以编写一段代码,每次评估断点时都会对其进行评估。这样,您可以指定仅在满足条件时停止。

编辑:根据您的评论,我会说Reflector可能很有用。它可以选择搜索特定类型或成员。使用相关装配启动Reflector。按F3进行搜索并为成员选择Ctrl-M,然后键入您要查找的成员的名称。您可以打开/关闭完全匹配以帮助您进行搜索。

答案 1 :(得分:1)

ObjectBrowser可能是您想要使用的。您可以使用它搜索属性。