Установка точки останова 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 ();
  } 
}
Другие вопросы по тегам