Точка останова не достигнута

#c #visual-studio-2008

#c #visual-studio-2008

Вопрос:

Я портировал приложение с VC6 на VS 2008. Я перестроил приложение в сборке выпуска. Файл Pdb доступен в папке, где находится exe. Но когда я загрузил приложение и поставил точку останова, я получаю следующее сообщение

«Точка останова в данный момент не будет достигнута.Для этого документа не было загружено никаких символов»

В чем может быть причина проблемы?

Комментарии:

1. Просто используйте __asm int 13; для запуска точки останова из кода 😉

Ответ №1:

Отладчику не удалось найти ни приложение, ни PDF-файлы.

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

‘hacks_vs10.exe ‘: Загружено’C:UsersjohnDocumentsVisual Студия 2010Projectshacks_vs10x64Debughacks_vs10.exe’, Символы загружены.

Когда PDB не найден, вместо того, чтобы говорить «Загруженные символы», он говорит:

Не удается найти или открыть PDB-файл

Убедитесь, что вы сначала запускаете правильную версию своего приложения (проверьте путь к запуску), а затем убедитесь, что PDB находится в этом каталоге. Вы можете изменить, куда генерируется PDB, настроив «Проект> Свойства …> Компоновщик> Сгенерировать файл базы данных программы»

Комментарии:

1. Я получаю сообщение ‘HoTSim2.0.exe ‘: Загружено’D:ProjectsAsWorxSimBinReleaseHoTSim2.0.exe’, Символы загружены. По-прежнему точки останова не достигнуты

Ответ №2:

Отладчику не удалось найти код, связанный с исходным местоположением, в котором вы установили точку останова.

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

Я полагаю, что могут быть и другие причины (например, встраивание, хотя теоретически компилятор мог бы сгенерировать правильное отображение для всех строк. Я не знаю, что здесь делает VS2008).

Вы уверены, что помещаете точку останова в путь к коду, который должен быть выполнен?

Комментарии:

1. По моему опыту, отладчик может отлично справиться с встраиванием.

2. @DeadMG: Я почти уверен, что в некоторых случаях у меня были проблемы в прошлом. Но простой тест работает. Спасибо за ваш вклад.

Ответ №3:

Файл PDB, о котором вы упоминаете, вероятно, не связан со сборкой релиза,

Отладочная информация обычно отсутствует в сборке выпуска (хотя вы можете включить ее, если необходимо, но следует ожидать неожиданных эффектов из-за оптимизации компилятора).

Следовательно, вы можете устанавливать точки останова только в известных точках входа DLL (возможно, через представление списка модулей — прошло некоторое время с тех пор, как я интенсивно использовал Visual Studio) или непосредственно в инструкциях по сборке.

Обратите внимание, что, возможно, вы могли бы скомпилировать часть своего приложения с символами отладки.

Комментарии:

1. В VC2008 отладочная информация генерируется по умолчанию, если вы не отключите ее.

2. Файл pdb генерируется как часть exe, и оптимизация компилятора не включена. Что мне теперь делать?

3. @John Dibling: Это не было включено в версии, перенесенной с VC 6.0. Поэтому я включил это.

Ответ №4:

Я только что решил аналогичную проблему

  • Я повторно сослался на все мои DLL
  • зашел в (Инструменты-> Параметры, «Проекты и решения», «Сборка и запуск») и установил «При запуске, когда проекты устарели» на «Запрос на сборку»

Я не уверен, какой из них устранил проблему, но это произошло!