Как отладить программу, которая работает в режиме отладки, создает и развертывает без ошибок, но затем ошибки в UnityPlayer.dll? - PullRequest
0 голосов
/ 10 мая 2018

Я разрабатываю инструмент для Смешанной реальности в Unity 2017.4, проект выполняется на Hololens посредством удаленной эмуляции в редакторе и самом редакторе, проект собирается и развертывается как на эмуляторе, так и на устройстве из Visual Studio 2017. Но когда Программа запускает UnityPlayer.dll, выбрасывает одну из двух точек останова: 0x0000003 или 0x0000005. Вот мой стек вызовов:

UnityPlayer.dll! 623d51fb () Неизвестно

[Кадры ниже могут быть неправильными и / или отсутствующими, символы не загружены для UnityPlayer.dll]

UnityPlayer.dll! 623d5703 () Неизвестно

UnityPlayer.dll! 623d58d7 () Неизвестно

UnityPlayer.dll! 61b1d66d () Неизвестно

...

UnityPlayer.dll! 630b22e2 () Неизвестно

UnityPlayer.dll! 630b2444 () Неизвестно

UnityPlayer.dll! 630bed92 () Неизвестно

[Внешний код]

В нем также говорится, что UnityPlayer_UAP_x86_debug_dotnet.pdb не найден, когда эти ошибки генерируются, и у меня установлен отладчик на смешанный или собственный. В управляемом он просто выбрасывает эти 2 ошибки, в настоящее время 0x0000005, кажется, встречается чаще.

Благодаря комментарию Джоша Петерсона, мы надеемся, что лучше стека вызовов:

UnityPlayer.dll! OutOfMemoryError () Неизвестно

UnityPlayer.dll! MemoryManager :: Allocate (без знака int, без знака int, структура const & MemLabelId, перечисление AllocateOptions, char const *, int) Неизвестно

UnityPlayer.dll! MemoryManager :: Reallocate (void *, unsigned int, unsigned int, struct MemLabelId const &, перечисление AllocateOptions, char const *, int) Неизвестный

UnityPlayer.dll! Realloc_internal (void *, unsigned int, unsigned int, struct MemLabelId const &, enum AllocateOptions, char const *, int) Неизвестный

UnityPlayer.dll! Dynamic_array :: Reserve (unsigned int) Неизвестный

UnityPlayer.dll! DecompressSubprogramBlob () Неизвестно

UnityPlayer.dll! Shader :: Transfer> (класс StreamedBinaryRead <0> &) Неизвестно

...

UnityPlayer.dll! Платформа :: Подробности :: __ abi_FunctorCapture, void, struct Windows :: Foundation :: IAsyncAction ^> :: Invoke (struct Windows :: Foundation :: IAsyncAction ^) Неизвестно

UnityPlayer.dll! Windows :: Система :: Потоки :: WorkItemHandler :: [Windows :: Система :: Потоки :: WorkItemHandler :: __ abi_IDelegate] :: __ abi_Windows_System_Threading_WorkItemHandler ___ abi_IDelegate ____ abi_Invoke ^ структура UnynA :: ::. 1048 *

threadpoolwinrt.dll! 734c4c6f () Неизвестно

[Указанные ниже кадры могут быть неправильными и / или отсутствующими, символы не загружены для threadpoolwinrt.dll]

[Внешний код]

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Unity публикует символы отладки, вы должны быть в состоянии по крайней мере получить имена функций из собственного стека вызовов.См. Эту документацию для получения информации о том, как соединиться с сервером символов Unity: https://docs.unity3d.com/Manual/WindowsDebugging.html

0 голосов
/ 10 мая 2018

Что нужно проверить:

  • В Visual Studio попробуйте встроить конфигурацию выпуска вместо отладки.
  • В Unity попробуйте изменить серверный сценарий в настройках проигрывателя для WSA. Мне повезло больше с бэкэндом .NET, чем с бэкэндом IL2CPP.
  • Обновление VS2017. У нас была проблема с конкретной версией VS2017, нарушающей сборки (хотя я не могу вспомнить, какая именно).
...