Установка точки останова VStudio в экземпляре объекта
Использование VStudio 2010 и C#
У меня есть класс под названием Млекопитающее. Собаки и кошки наследуются от млекопитающих.
Однако какая-то конкретная собака ворчит, и мне нужно выяснить, почему.
Я хочу установить точку останова в классе Mammal - но только когда класс Dog выполняется и вызывает Mammal в качестве базового класса. У меня много примеров собак и кошек - я хочу установить точку останова для конкретного экземпляра Dog - под названием Fido.
Надеюсь, это имеет смысл. Это возможно? Я не понимаю, как условная точка останова поможет мне сделать это.
Спасибо
4 ответа
Ты можешь использовать Condition
на BreakPoint
для достижения этой цели. Breakpoint
будет попадать только тогда, когда вы вошли Condition
правда
Посмотрите этот учебник Как: указать условие точки останова
Вы можете использовать условие this is Dog && this.Name == "Fido"
Вы можете создать подкласс Dog для SubDog и вызывать только new SubDog
при создании фидо. Установите точку останова в конструкторе SubDog или переопределите методы в Dog, которые нужно отлаживать, переопределите вызов базового метода и установите точки останова в переопределениях.
Используйте условную точку останова, где
this is Dog && (this as Dog).Name == "Fido"
Другие предлагали условные точки останова, но я всегда обнаруживал, что они замедляют отладку, поскольку условие оценивается отладчиком. Я обычно делаю следующее:
В вашем базовом классе добавьте:
#if DEBUG
BreakOnParticularPet ();
#endif
везде, где вы хотите остановить программу, а затем добавить:
void BreakOnParticularPet ()
{
if (this pet is the one we're interested in) // pseudocode
{
System.Diagnostics.Debugger.Break ();
}
}