Я пытаюсь выполнить программу C/C++ (MapServer) в Visual Studio, но я не вижу локальные переменные.Не удается увидеть переменные при отладке x64-разрядной библиотеки DLL в Visual Studio
Я создал новый проект, добавив основной .exe, который я построил из источника. Я могу установить точки останова и выполнить программу без проблем, но я не вижу, что хранится в любой из переменных. Я бегу все это на виртуальной машине - хост ОС Windows, 10 и VM является Windows 7
Программа:
- построен как выпуск отладки
- не имеет оптимизаций
- символы нагрузить штраф
Я довольно уверен, что это происходит из-за того, что это 64 бит релиз, как я могу использовать тот же подход для x32 сборки и видеть переменные.
Пример x32 отладчика (первые 5 переменных являются правильными - остальные убираются):
Пример 64 сеанса отладки (обратите внимание на программу работает отлично):
я думал, что это может быть связано с VS2008, так что я тоже пытался в VS2015, но имели подобные (отсутствие) результаты:
Попытка получить доступ к переменным в окне Immediate производит:
// working VS2008 x32 build
map->name
0x00ffcb40 "WFS_server"
// VS2008 x64 build
map->name
0x0000000000000000 <Bad Ptr>
// VS2015 x64 build
map->name
0x0000000000000000 <NULL>
Я пропускаю некоторые настройки отладчика в Visual Studio, чтобы установить проект отладки для x64? Или есть ли какая-то проблема с кастингом в исходном коде, который производит это?
Все указатели оценили ..
Вы можете хотеть, чтобы попытаться восстановить установку VS (Программы и компоненты -> VS -> Изменить -> Ремонт). Я не знаю, испытываете ли вы одну и ту же проблему или различный оттенок одной и той же проблемы, но когда я хотел проверить, могу ли я воспроизвести вашу проблему, я понял, что не могу запустить приложение с прикрепленным отладчиком. MSVSMON.exe просто не запускается (что еще более странно: он попытается использовать MSVSMON VS2010, в то время как я использовал VS2012). Ремонт установки исправил эту проблему (и, да, я прекрасно вижу значения всех переменных). –
@ AlgirdasPreidžius благодарит за предложение. У меня была чистая установка 2015 года, и я просто отремонтировал 2008 год без каких-либо изменений. Все это работает на виртуальной машине, которая, как я думаю, может быть частью проблемы. – geographika
Если вы видите 0xbaadfood обратно в отладочном представлении, то «это должно быть ошибка в отладчике» - это не первое, что вы считаете.VS2008 и VS2015 также используют * очень разные системы отладки. Повреждение кучи является очень распространенной ошибкой и имеет очень случайное поведение, и это не гарантирует, что произойдет сбой программы. –