Сегодня столкнулся с ситуацией, когда программа под отладчиком работала не так как реал-тайме. Попробую смоделировать. Имеем следующий код:
class Program
{
static void Main(string[] args)
{
Debug.WriteLine("1. Старт приложения.");
var class1 = new Class1();
Debug.WriteLine("2. Какие-то полезные действия.");
Console.WriteLine(class1.Obj);
Debug.WriteLine("4. Завершение приложения.");
}
}
class Class1
{
private object _obj;
public object Obj
{
get
{
if (_obj == null)
{
Debug.WriteLine("3. Инициализация свойства Obj класса Class1");
_obj = "Sample object";
}
return _obj;
}
}
}В результате исполнения в окне отладчика:

Теперь поставим точку останова в начало функции
Main и добавим свойство
Obj экземпляра
class1 в контролируемые значения:

Пройдемся пошагово по функции
Main:

В окне отладчика:

Беда в том, что даже если мы поставим точку останова внутри
Class1.
Obj.
get(), проходя пошагово функцию
Main мы в эту точку останова не попадем. Отладчик вызывает
Class1.
Obj.
get() для того чтобы отобразить значение свойства
class1.
Obj игнорируя точки останова и даже возникающие исключения внутри этой функции! Как говорится комментарии излишни.