Я пытаюсь отладить программу на C ++, для которой я взял исходный код в Visual Studio 2017 Professional.Я могу построить приложение в конфигурации «Release x64», и оно прекрасно работает.
Даже когда я выполняю его в режиме Release , оно обращает внимание на точки останова.Но во время пошагового выполнения индикатор переходит в одну строку ветви if
, хотя условие оценивается как false
, а затем продолжает работать за ветвью, как и ожидалось (по иронии судьбы, строка, предполагаемая индикатором, будет выполнена, являетсяexit
оператор, поэтому он определенно не выполнен).Я предполагаю, что некоторые авто-отступы приводили к тому, что символы отладки не синхронизировались с источником.Вот почему я хотел бы обновить символы или выполнить код в фактической конфигурации «Debug».
Однако, когда я переключаю стартовую конфигурацию на «Debug x64» и пытаюсь запустить проект, он даетОшибка «Bad Image»:
C: \ WINDOWS \ SYSTEM32 \ MSVCP140D.dll либо не предназначена для работы в Windows, либо содержит ошибку.Попробуйте установить программу еще раз, используя оригинальный установочный носитель, или обратитесь к системному администратору или поставщику программного обеспечения за поддержкой.Состояние ошибки 0xc000012f.
Из того, что я знаю, "MSVCP140D" означает версию DLL отладки Microsoft Visual C ++ v140.DLL не отсутствует, на самом деле у меня она находится в 6 местах на моей машине:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Redist\MSVC\14.16.27012\debug_nonredist\x64\Microsoft.VC141.DebugCRT\msvcp140d.dll
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Redist\MSVC\14.16.27012\debug_nonredist\x86\Microsoft.VC141.DebugCRT\msvcp140d.dll
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Redist\MSVC\14.16.27012\onecore\debug_nonredist\x64\Microsoft.VC141.DebugCRT\msvcp140d.dll
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Redist\MSVC\14.16.27012\onecore\debug_nonredist\x86\Microsoft.VC141.DebugCRT\msvcp140d.dll
C:\Windows\System32\msvcp140d.dll
C:\Windows\SysWOW64\msvcp140d.dll
Рабочая нагрузка "Разработка на компьютере с C ++", как говорят, полностью установлена VS Installer (которая заявляет о себена сегодняшний день версии 1.18.1100.314).Я обычно программирую на C #, поэтому я не знаком с тем, как взаимодействуют настройки проекта, и я заметил несколько вещей, но я не уверен, имеет ли какое-либо из них отношение к моей проблеме:
- Набор инструментов платформы - «Visual Studio 2017 ( v141 )».
- Единственный макрос, содержащий путь, который удаленно похож на один из 4 «перенаправленных» путей, упомянутых вышеявляется макросом
$(DebugCppRuntimeFilesPath)
, который не является частью какой-либо записи в настройках «Каталоги VC ++». - Этот макрос
$(DebugCppRuntimeFilesPath)
оценивается как «C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017»\ Professional \ VC \ Redist \ MSVC \ 14.16.270 23 \ debug_nonredist \ x64 ", когда DLL находится в" ... \ 14.16.270 12 \ ... ",Каталог "14.16.270 23 " не существует.
Точка 3 выглядит для меня как наиболее многообещающий намек, но я понятия не имею, куда приходит этот более высокий номер версииоткуда, где его можно изменить или повлиять на проект или установку и т. д.
Обновление: Я также попытался загрузить установщик VS 2019 (версия 2.0.3297.403) и посмотреть, предлагает ли этолюбые обновления рабочих нагрузок VC ++, но, очевидно, это не так.