Установка точки останова VStudio в экземпляре объекта - PullRequest
2 голосов
/ 22 ноября 2011

Использование VStudio 2010 и C #

У меня есть класс под названием Млекопитающее. Собаки и кошки наследуются от млекопитающих.

Однако какая-то конкретная собака ворчит, и мне нужно выяснить, почему.

Я хочу установить точку останова в классе Mammal - но только когда класс Dog выполняется и вызывает Mammal в качестве базового класса. У меня много примеров собак и кошек - я хочу установить точку останова для конкретного экземпляра Dog - под названием Fido.

Надеюсь, это имеет смысл. Это возможно? Я не понимаю, как условная точка останова поможет мне в этом.

Спасибо

Ответы [ 4 ]

4 голосов
/ 22 ноября 2011

Вы можете использовать Condition на BreakPoint для достижения этой цели.Breakpoint будет срабатывать только тогда, когда введено Condition истинно

См. Этот учебник Как: указать условие точки останова

Можно использовать условие this is Dog && this.Name == "Fido"

0 голосов
/ 29 сентября 2018

Вы можете создать подкласс Dog для SubDog и вызывать new SubDog только при создании Fido. Установите точку останова в конструкторе SubDog или переопределите методы в Dog, которые необходимо отлаживать, переопределите вызов базового метода и установите точки останова в переопределениях.

0 голосов
/ 22 ноября 2011

Другие предлагали условные точки останова, но я всегда обнаруживал, что они замедляют отладку, поскольку условие оценивается отладчиком.Я обычно делаю следующее: -

В базовом классе добавьте:

#if DEBUG
  BreakOnParticularPet ();
#endif 

везде, где вы хотите остановить программу, а затем добавьте:

void BreakOnParticularPet ()
{
  if (this pet is the one we're interested in) // pseudocode 
  {
    System.Diagnostics.Debugger.Break ();
  } 
}
0 голосов
/ 22 ноября 2011

Используйте условную точку останова, где

this is Dog && (this as Dog).Name == "Fido"
...