Точка останова в режиме релиза - PullRequest
6 голосов
/ 10 февраля 2012

Я использую (C ++) Visual Studio 2010.

Я должен отслеживать поток управления моего приложения. Так что я установил точку останова в исходном коде

во время работыприложение в режиме отладки, точка останова попадает.Но в режиме выпуска это не ударило.

Так что, пожалуйста, предложите решение для горячей точки останова в режиме выпуска ???

Ответы [ 4 ]

16 голосов
/ 25 ноября 2015

Я использую VS2015.после множества неудачных решений я нашел подходящее для меня.Просто снимите флажок «Включить только мой код» в меню-> Отладка-> Параметры-> Отладка-> Общие.Смотрите прикрепленное изображение: включите отладку в режиме выпуска-VS2015

Я очень надеюсь, что это решит проблему для вас

9 голосов
/ 10 февраля 2012

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

Режим отладки не имеет такого рода оптимизации и предназначен для отладки вашего кода.

3 голосов
/ 18 сентября 2014

Вы можете использовать __debugbreak () intrinisic. Это также очень удобно, если вы хотите нарушить определенное условие. Например:

if (var > LIMIT)
  __debugbreak();
1 голос
/ 18 сентября 2014

Точки останова в режиме релиза удобны для работы. Самый простой способ заставить это работать - это вызвать функцию с именем release_mode_breakpoint() в вашем коде. Затем определите эту функцию следующим образом:

#pragma optimize("", off)
void release_mode_breakpoint()
{
    int put_breakpoint_here = 1;
}
#pragma optimize("", on)

Затем вы можете поместить точку останова в эту строку объявления int, и она будет достигнута даже в режиме выпуска. Затем просто увеличьте стек в отладчике до функции, в которой вы на самом деле хотели установить точку останова.

На самом деле не оставляйте этот код в окончательном выпуске, поскольку неоптимизированная строка может помешать компилятору должным образом оптимизировать вызывающий код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...