Visual Studio - отладочные точки останова Перемещение и больше не попадание в строки, которые они должны

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

Вещи, которые я уже пробовал:

  • Удален файл PDB и перестроен.
  • Удален EXE файл и перестроен.
  • Восстановлен весь проект. (Очистить, Восстановить)
  • Проверено, что оптимизация отключена.
  • Проверено, что путь отладки совпадает с пути вывода сборки.
  • Проверяется флажок "Использовать исходные файлы, чтобы точно соответствовать исходной версии".

В случае, если в моем коде есть что-то нечетное, вызывающее это, это функция, в которой это происходит:

bool BManager::Record(string _strFile)
{
   bool bSuccess = false;
   CBitmap * bitmap = new CBitmap();
   HBITMAP  handle = NULL;
   HPALETTE hPalette = NULL;
   //LoadBitmapFromBMPFile( (LPTSTR)_strFile.c_str(), &handle, &hPalette);
   ofstream out;
   out.open(_strFile.c_str());

   handle = (HBITMAP)LoadImage(NULL, (LPTSTR)_strFile.c_str(), IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_DEFAULTSIZE | LR_LOADFROMFILE);

   bitmap->FromHandle(handle);
   bSuccess = ImageBitmap_Record(bitmap);
   delete bitmap;
   bitmap = NULL;
   CloseHandle(handle);
   return bSuccess;
}

Любые мысли?

Ответ 1

Убедитесь, что файл, содержащий этот код, не имеет флагов оптимизации, которые переопределяют глобальные параметры.

Ответ 2

Я нашел, что конец строки может вызвать такую ​​проблему. Как только я случайно сменил некоторые строки из каретки стиля окна на каталоги стиля Linux, точка отладки больше не попала в строку. Что я сделал для решения проблемы, было использование notepad ++ для исправления EOL

Ответ 3

Когда я вижу такие вещи, первое, что я всегда делаю, - это открыть окно Debug- > Modules и убедиться, что двоичная отладка была загружена из того места, которое, как я думаю, должно быть.

Ответ 4

Вот несколько идей:

  • Исходный файл изменен поскольку вы последний раз запускали отладчик.
  • Ваш код был оптимизирован и возможно, некоторые строки, удаленные компилятор с помощью оптимизации.
  • VS не нравится фактически линия точка останова назначается. Это всегда нравится последняя строка выражение распространяется по нескольким линии.
  • Исходный файл, отображаемый вами отличается от исходного файла, который (они могут быть от двух разные папки).

Ответ 5

У меня была такая же проблема, и я работал над ней, создав новое "решение" в VS и импортировав в нее существующие файлы .h и .cpp.

Отладка проблем.

Я уверен, что проблема была где-то в настройках конфигурации.