#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
- зашел в (Инструменты-> Параметры, «Проекты и решения», «Сборка и запуск») и установил «При запуске, когда проекты устарели» на «Запрос на сборку»
Я не уверен, какой из них устранил проблему, но это произошло!