IL2CPP управляемые трассировки стеков
При возникновении исключения в управляемом коде стековый трек для исключения может помочь вам понять причину исключения. Однако, управляемый трек стека может в некоторых случаях отображаться не так, как ожидалось. Трек стека зависит от конфигурации сборки.
C++ конфигурация компилятора
Вы можете установить конфигурацию компилятора C++ для сборок IL2CPP одним из следующих способов:
-
Через меню Настройки Игрока в Редакторе. Выполните следующие действия, чтобы изменить скриптовый сервер через меню Настройки Игрока:
Из кода, по вызову
PlayerSettings.SetIl2CppCompilerConfigurationсо значением отIl2CppCompilerConfigurationenum.
Эти параметры имеют следующие последствия для управляемых трассирований стеков:
- Отладка: IL2CPP сообщает о надежном управляемом стеке и включает каждый управляемый метод в стек вызова. Трек стека не включает номера строк из исходного кода C#.
- Выпуск или Мастер: IL2CPP может произвести стек вызова, который отсутствует один или более управляемых методов. Это происходит, когда C++ компилятор вставляет отсутствующие методы. Вставление методов обычно повышает производительность во время выполнения, но может затруднить понимание стеков вызовов.
IL2CPP всегда предоставляет хотя бы один управляемый метод в стеке вызовов. Для трассировки стеков, созданных из управляемых исключений, это метод, где произошло исключение. Она также включает другие методы, если они не встроены.
IL2CPP информация о трассировке стека
Можно настроить IL2CPP для включения сведений о номерах файлов и строк в управляемые трассировки стеков одним из следующих способов:
- С помощью настроек Проигрывателя в Редакторе: Изменить > Project Настройки > Проигрыватель > Другие Настройки. Затем, под заголовком Конфигурация, установите свойство IL2CPP Stacktrace Information на Имя Метода, Имя Файл и Номер Стороны.
- Из кода, вызвав
PlayerSettings.Il2CppStacktraceInformationсIl2CppStacktraceInformation.MethodFileLineNumberв качестве значения параметра.
Эта настройка указывает IL2CPP включать все кадры управляемого стека в стек вызова. Каждый кадр стека также включает соответствующий номер строки C#, если управляемый файл символов (.pdb) доступен для управляемой сборки (.dll), в которой существует этот код.
При включении этой функции немного увеличивается время сборки и окончательный размер построенной программы. Процесс сборки Player включает дополнительный шаг, который обрабатывает файлы символов отладки и генерирует новый файл данных, который включает необходимое формирование символов. Unity отправляет этот файл данных с построенным Player и использует его во время выполнения для определения информации о строке C# в стеках вызовов.
При включении этой функции Unity генерирует правильные стеки вызовов в конфигурациях либо Выпуск, либо Мастер, даже при активном вставлении методов.
Отладка скриптов
Чтобы включить Отладку Скриптов, перейдите в Файл > Профили Создания и затем установите флажок Отладка Скриптов. Когда отладка скриптов включена, IL2CPP сообщает правильный управляемый трек стека с методом, файлом и номером строки. Это приводит к увеличению размера программы и снижению производительности.
Тип: Если требуется только улучшить трассировку стеков, не включайте отладку скриптов. Вместо этого включите номера строк исходного кода как описано выше.