Я пытаюсь пройти через программу C / C ++ (картсервер) в Visual Studio, но я не вижу локальные переменные.
Я создал новый проект, добавив основной .exe, который я собрал из исходного кода. Я могу установить точки останова и пройти программу без проблем, но я не вижу, что хранится в любой из переменных. Я запускаю все это на виртуальной машине — основной операционной системой является Windows 10, а виртуальной машиной — Windows 7.
Программа является:
Я вполне уверен, что это связано с тем, что это 64-разрядная версия, так как я могу использовать точно такой же подход для сборки x32 и увидеть переменные.
Пример отладчика x32 (первые 5 переменных верны, остальные не установлены):
Пример сеанса отладки x64 (обратите внимание, что программа работает нормально):
Я думал, что это может быть связано с VS2008, поэтому я также пытался в VS2015, но у меня были похожие (неудачные) результаты:
Попытка доступа к переменным в Immediate Window приводит к:
// 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? Или есть какая-то проблема приведения в исходном коде, которая производит это?
Любые указатели оценили ..
Это было вызвано тем, что stdrup устарел в Windows, и куча стала поврежденной.
Проблему MapServer на GitHub можно увидеть по адресу https://github.com/mapserver/mapserver/pull/5277
Этот вопрос также описывает похожую проблему: Повреждение кучи с помощью strdup
Других решений пока нет …