«Поиск» членов объекта в отладчике JIT .NET - PullRequest
0 голосов
/ 15 сентября 2009

Я - относительно новый сотрудник в моей нынешней компании, поэтому я все еще "пью из пожарного рукава" с точки зрения изучения моего программного обеспечения и архитектуры. Во время написания модульных тестов я столкнулся с некоторыми очень большими объектами, скажем для обсуждения «SavedOrder», и мне нужно найти, где найти конкретный фрагмент данных, который я ищу.

Проблема, с которой я столкнулся, заключается в том, что я знаю, что у каждого SavedOrder есть где-то во внутренностях его наследства и члены (у которых есть члены, из которых есть члены, и так далее, и так далее), часть данных ищу.

Пока что я бездумно расширяю свои часы и слежу за объектами, чтобы, надеюсь, найти то, что я ищу. Кто-нибудь знает плагин / технику, чтобы использовать, чтобы найти, имеет ли этот объект что-то типа «Тип A» или что-то со значением «SomeEnum.SomeValue»?

РЕДАКТИРОВАТЬ: Все хорошие входные данные, пока ничего, что полностью решает мою цель. Браузеры объектов (Object Browser и Reflector) хорошо просматривают элементы каждого объекта, но с целью связать точку A с точкой D они действительно просто помогают привести точку A к точке B или D к C.

Я думаю, что рекурсивный алгоритм псевдо-c #, который лучше всего описал бы решение, был бы:

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


}

Кто знает, может быть, не возможно.

Ответы [ 2 ]

3 голосов
/ 15 сентября 2009

Я не уверен, что полностью следую за вами, но, возможно, вы могли бы использовать условную точку останова. Установите точку останова на соответствующем коде, щелкните правой кнопкой мыши и выберите условную точку останова. Отсюда вы можете написать фрагмент кода, который будет оцениваться каждый раз при оценке точки останова. Таким образом, вы можете указать, чтобы остановить только при выполнении условия.

РЕДАКТИРОВАТЬ: Исходя из ваших комментариев, я бы сказал, что Reflector может быть полезным. Он имеет возможность поиска определенных типов или членов. Запустите Reflector с соответствующими сборками. Нажмите F3 для поиска и выберите Ctrl-M для членов и введите имя члена, которого вы ищете. Вы можете включить / выключить точное совпадение, чтобы помочь вам с поиском.

1 голос
/ 16 сентября 2009

ObjectBrowser , вероятно, вы хотите использовать. Вы можете искать свойства, используя это.

...