Unity 6.3
0 онлайн 13 гостей 3 в системе
Вход

Отладка производственных веб-сборок

Используйте внешние символы, обработчики ошибок JavaScript и сопоставление трассировки стека для отладки развернутых веб-сборок.

Unity Веб-сборки не поддерживают полную отладку на уровне исходного кода. Однако можно сохранить некоторые сведения об отладке и использовать отчеты об ошибках браузера для исследования сбоев во время выполнения в развернутых сборках.

Использование внешних символов

Включите внешние символы в вашей Web-компилации (меню: Настройки плеера > Настройки публикации > Настройки отладки > Внешние) для включения имен функций в трассировки производственного стека. При сборки с внешними символами Unity генерирует файлы символов отдельно от основного вывода сборки.

При возникновении неперехваченного исключения JavaScript Unity может по внешним символьным данным сопоставить кадры стека WebAssembly с именами функций C/C++, сформированных IL2CPP. Эти имена обычно достаточно читаемы, чтобы определить исходный класс и метод на C#.

Например, метод C#, такой как PlayerController.Jump(), может появиться в трассировке стека как PlayerController_Jump_m<hash>.

Используйте внешние символы для идентификации функции, в которой произошла ошибка, а не точной строки источника.

Отображение трассировки стека более точно к C# именам

Если вам требуется более точное сопоставление, Unity также создает файл MethodMap.tsv во время процесса сборки. Этот файл может помочь сопоставить имена методов, созданных IL2CPP, обратно к исходным именам методов C#, что особенно полезно для перегруженных методов.

Unity не копирует автоматически MethodMap.tsv в каталог выхода сборки. Вы можете найти его в:

Library/Bee/artifacts/WebGL/il2cppOutput/cpp/Symbols

Ограничения

Внешние символы не включают:

  • Точное название файла C#
  • Точные номера строк C#
  • Возможность прохождения C# кода строка за строкой в производственном веб-компилировании

Размер сборки и влияние времени выполнения

Unity хранит внешние символьные файлы отдельно от основной сборки, поскольку они необходимы только для расследования ошибок. Это означает, что внешние символьные файлы не влияют на первоначальную загрузку приложения для пользователей.

Файлы символов обычно имеют размер около 1-2 MB, и вы можете хранить их с развернутыми артефактами сборки.

Поскольку Unity хранит внешние символьные файлы отдельно от основного вывода сборки, этот подход имеет минимальное влияние на размер первоначальной загрузки и производительность производственной сборки во время выполнения.

Сообщить об ошибках браузера

Чтобы собирать отчеты об ошибках из развернутой веб-сборки, добавьте обработчики ошибок JavaScript на странице, на которой размещено содержимое Unity, и отправьте результаты в службу анализа или отчетов о сбоях.

Полезные ловушки браузера включают:

  • window.onerror
  • window.addEventListener('error', ...)
  • console.error

Эти ловушки могут захватывать:

  • Неуловленные исключения JavaScript
  • Некоторые ошибки времени выполнения WebAssembly
  • Некоторые ошибки двигателя, которые появляются через отчеты об ошибках браузера

Эти отчеты можно сочетать с внешними символами, чтобы упростить чтение трассировки производственного стека.

Дополнительные ресурсы