Точка останова при создании перечисления - PullRequest
0 голосов
/ 03 августа 2011

У меня есть enum, и я пытаюсь выяснить, какой код на самом деле создает его экземпляр. У меня есть много кода, и я совершенно уверен, что код, который я ищу, находится в одном из многих непонятных проектов, которых нет в моем текущем решении, поэтому найти использование не получится.

Я знаю, что в перечислении нет такого понятия, как конструктор, но мне бы очень хотелось, чтобы способ прерывал выполнение и проверял стек вызовов каждый раз, когда любой код создает и использует это перечисление. Я пытался установить точки останова для отдельных значений перечисления, но они никогда не переключаются, даже когда я знаю, что они используются.

Возможно ли это, или мне нужно выбрать другой маршрут, чтобы найти то, что я ищу.

Ответы [ 3 ]

2 голосов
/ 03 августа 2011

Ну, это технически возможно, если вы управляете кодом самого перечисления:

  1. Переименуйте YourEnum в YourEnumInternal
  2. Создайте класс YourEnum и поместите Свойство для каждого значения в YourEnumInternal с тем же именем и верните соответствующий член YourEnumInternal.
  3. Установите точки останова в каждом свойстве.

Кроме того, если вы действительно хотите посмотреть на стеки вызовов, когда члены этого перечисления добавляются в конкретную коллекцию (как вы сказали в комментарии), почему бы не найти использования в коллекции (которая, как мы надеемся, имеет меньшую scope?) и ставить точки останова (или еще лучше, TracePoints с переменной $ CALLSTACK psuedovariable), куда бы ни добавлялись элементы?

0 голосов
/ 03 августа 2011

Вы можете использовать Object Browser в VS для поиска вашего enum.Он включает сборки, на которые есть ссылки (но не часть вашего решения как проекты).

0 голосов
/ 03 августа 2011

Вы можете использовать Find All References, затем вы можете установить точки останова в соответствующих местах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...