Конструктор класса никогда не выполняется в режиме релиза - PullRequest
0 голосов
/ 30 октября 2008

Именно то, что говорит название. Я использую MSVC ++ 2008 express, и мой конструктор классов никогда не выполняется при компиляции в режиме выпуска. Он работает в режиме отладки.

Я делаю что-то вроде:

ClassTest test;
test.DoIt();

Точки останова на DoIt(); срабатывают, но точки останова на ClassTest::ClassTest(); нет.

1 Ответ

5 голосов
/ 30 октября 2008

Просто мысль - это может быть оптимизация компилятора в режиме Release, предотвращающая попадание в точку останова. Это может произойти, если конструктор ничего не делает (т. Е. Не работает). Попробуйте добавить несколько простых операторов в конструктор, например,

  1. Объявление локальной переменной
  2. Инициализировать переменную
  3. Используйте его каким-либо образом (например, распечатайте)

Затем добавьте точку останова на шаге (3) выше и посмотрите, достигнута ли эта точка останова.

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

...