2016-03-20 1 views
0

Я пытаюсь выполнить программу C/C++ (MapServer) в Visual Studio, но я не вижу локальные переменные.Не удается увидеть переменные при отладке x64-разрядной библиотеки DLL в Visual Studio

Я создал новый проект, добавив основной .exe, который я построил из источника. Я могу установить точки останова и выполнить программу без проблем, но я не вижу, что хранится в любой из переменных. Я бегу все это на виртуальной машине - хост ОС Windows, 10 и VM является Windows 7

Программа:

  • построен как выпуск отладки
  • не имеет оптимизаций
  • символы нагрузить штраф

Я довольно уверен, что это происходит из-за того, что это 64 бит релиз, как я могу использовать тот же подход для x32 сборки и видеть переменные.

Пример x32 отладчика (первые 5 переменных являются правильными - остальные убираются):

Working debug session

Пример 64 сеанса отладки (обратите внимание на программу работает отлично):

Failing session

я думал, что это может быть связано с VS2008, так что я тоже пытался в VS2015, но имели подобные (отсутствие) результаты:

enter image description here

Попытка получить доступ к переменным в окне 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? Или есть ли какая-то проблема с кастингом в исходном коде, который производит это?

Все указатели оценили ..

+0

Вы можете хотеть, чтобы попытаться восстановить установку VS (Программы и компоненты -> VS -> Изменить -> Ремонт). Я не знаю, испытываете ли вы одну и ту же проблему или различный оттенок одной и той же проблемы, но когда я хотел проверить, могу ли я воспроизвести вашу проблему, я понял, что не могу запустить приложение с прикрепленным отладчиком. MSVSMON.exe просто не запускается (что еще более странно: он попытается использовать MSVSMON VS2010, в то время как я использовал VS2012). Ремонт установки исправил эту проблему (и, да, я прекрасно вижу значения всех переменных). –

+0

@ AlgirdasPreidžius благодарит за предложение. У меня была чистая установка 2015 года, и я просто отремонтировал 2008 год без каких-либо изменений. Все это работает на виртуальной машине, которая, как я думаю, может быть частью проблемы. – geographika

+1

Если вы видите 0xbaadfood обратно в отладочном представлении, то «это должно быть ошибка в отладчике» - это не первое, что вы считаете.VS2008 и VS2015 также используют * очень разные системы отладки. Повреждение кучи является очень распространенной ошибкой и имеет очень случайное поведение, и это не гарантирует, что произойдет сбой программы. –

ответ

Смежные вопросы