Как узнать, где устанавливается значение во время выполнения?

#c# #vb.net #visual-studio #visual-studio-2015

#c# #vb.net #visual-studio #visual-studio-2015

Вопрос:

Я понимаю, что это может быть невозможно, но здесь все равно идет..

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

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

В некотором смысле, условная точка останова, где условие AnyObject.ToString()="target string"

Или, возможно, точка останова или часы в системе.Объект или система.Строка сделает свое дело, возможно ли это?

Комментарии:

1. Можете ли вы найти все ссылки, щелкнув правой кнопкой мыши в Visual Studio? Или вы используете отражение где-то в своем коде.

2. Но откуда вы получаете значение? Оно должно быть откуда-то. Или вы просто видите это в пользовательском интерфейсе?

3. Я не уверен, насколько выполнимо это предложение, но, возможно, вы можете использовать Mono. Сесил, чтобы просмотреть все методы в вашей сборке и ввести некоторый вызов журнала, если есть оператор, устанавливающий искомое значение

4. Еще одно предложение: вы можете попробовать использовать . ЧИСТЫЙ отражатель ПРОТИВ расширения visualstudiogallery.msdn.microsoft.com /… и посмотрите, можете ли вы указать точку останова в строке или объекте (PS. Я не использовал расширение, поэтому не уверен, что оно может это сделать, но похоже на описание)

5. Если эта строка не является константой, она, скорее всего, создана StringBuilder где-то. Если вы настроили отладку исходного кода фреймворка , вы можете установить условную точку останова в последнем операторе StringBuilder.ToString() (самый простой способ сделать это — установить точку останова функции StringBuilder.ToString , запустить код и затем уточнить точку останова). Остерегайтесь, что это может значительно замедлить выполнение.