ntdll.pdb не найден в x64 сборке VS2019

#c #arm #visual-studio-2019 #apple-m1

Вопрос:

Я пытаюсь использовать Visual Studio 2019 на виртуальной машине под управлением Windows 11 на новом Macbook pro. У меня есть самая простая из возможных программ, программа hello world на c , и когда я пытаюсь запустить ее в конфигурации x64, она выдает исключение из ntdll.dll говоря, что ntdll.pdb не может быть найден. Я включил сервер символов Microsoft, и он по-прежнему не работает. Кто-нибудь знает о каком-либо обходном пути для этого или на данный момент это просто мертвая вещь, потому что VS не оптимизирован для архитектуры ARM?

 #include lt;iostreamgt;  int main() {  std::cout lt;lt; "Hello There" lt;lt; std::endl; }  
 Exception thrown at 0x00007FFFBDE88234 (ntdll.dll) in Test.exe: 0xC0000005: Access violation reading location 0x0000000000000000.  

На x86 все работает так, как и ожидалось.

Комментарии:

1. файлы pdb являются информацией отладчика. Для чего-то такого же тесно интегрированного с операционной системой, как ntdll, файл pdb практически бесполезен. Вы эффективно отлаживаете операционную систему. Даже если вы столкнулись с ошибкой в операционной системе, все, что вы можете с этим поделать, — это смурф. Однако код, который у вас есть, не должен выбрасывать исключение нулевого указателя в любом месте, так что есть какая-то неправильная конфигурация, которую будет очень сложно понять, не сидя за компьютером и не копаясь.

2. Полностью пропустил заметку о процессоре ARM в конце. Вероятно, в этом проблема, но, как и при отладке операционной системы, я не уверен, что вы можете с этим поделать. Работает ли что-нибудь 64 — разрядное на виртуальной машине?

3. Да, он выполняет 64-битную эмуляцию для большинства вещей. У меня есть рассказы о том, как на нем довольно хорошо работать, так что, вероятно, это проблема Visual Studio. Я попытался выполнить Get-ChildItem в powershell для поиска файла ntdll.pdb, но он продолжал получать ошибки отказа в доступе, даже когда я запускал администратора.

4. На данный момент это выходит за рамки моей компетенции, но я могу сказать, что если каким-то образом выяснится, что нулевой указатель является результатом отсутствующего файла pdb, кто-то сильно сморщился. Гораздо более вероятно, что что-то в выполнении программы взорвалось, вызвало остановку ntdll, а запрос pdb-это просто отладчик, пытающийся предоставить вам как можно больше информации. Почему программа взорвалась? Этого не должно было быть.

5. Да, там написано, что источник не найден, и выбрасывается этот нулевой указатель, так что я думаю, что кто-то забыл добавить что-то на серверы или что-то в этом роде. Потому что он взрывается только в 64-разрядных сборках, и даже совершенно новый пустой проект c делает это. Спасибо, что попытались помочь, хотя, лол.