Конструктор класса никогда не выполняется в режиме релиза

StackOverflow https://stackoverflow.com/questions/248714

Вопрос

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

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

ClassTest test;
test.DoIt();

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

Это было полезно?

Решение

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

. <Ол>
  • Объявите локальную переменную
  • Инициализируйте переменную
  • Используйте его каким-либо образом (например, распечатайте)
  • Затем добавьте точку останова на шаге (3) выше и посмотрите, достигнута ли эта точка останова.

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

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top