Не удается увидеть переменные при отладке 64-битной DLL в Visual Studio

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

Любые указатели оценили ..

0

Решение

Это было вызвано тем, что stdrup устарел в Windows, и куча стала поврежденной.

Проблему MapServer на GitHub можно увидеть по адресу https://github.com/mapserver/mapserver/pull/5277

Этот вопрос также описывает похожую проблему: Повреждение кучи с помощью strdup

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]