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

Управляемые трассировки стека на iOS

При возникновении исключения в управляемом коде трассировочный стек для исключения может помочь понять причину исключения. Однако в некоторых случаях на iOS трассировочный стек управляемого кода может отображаться не так, как ожидалось. Кроме того, трассировочный стек варьируется в зависимости от конфигурации сборки Xcode.

Отладочные сборки

При использовании конфигурации сборки отладки с iOS, IL2CPP сообщит надежный управляемый трек стека и включит каждый управляемый метод в стек вызова. Трек стека не включает номера строк из исходного кода C#.

Релизные сборки

Когда вы используете конфигурацию сборки выпуска, IL2CPP может создать стек вызовов, в котором отсутствует один или несколько управляемых методов. Это происходит потому, что компилятор C++ встроил отсутствующие методы. Встроение методов обычно хорошо для производительности во время выполнения, но может затруднить понимание стеков вызовов. IL2CPP всегда предоставляет по крайней мере один управляемый метод в стеке вызовов. Это метод, в котором произошло исключение. Он также включает другие методы, если они не встроены.

Если вы можете воспроизвести исключение локально, используйте Xcode, чтобы найти встроенные методы. Запустите приложение в Xcode, используя конфигурацию выпуска, и установите точку останова исключения. Вид стека вызова в Xcode покажет, какие методы действительно существуют, а какие были встроены.

Номера строк исходного кода

По умолчанию стеки вызовов IL2CPP не включают информацию о номерах строк исходного кода в конфигурации отладки или выпуска. Вы можете включить номера строк исходного кода, выполнив следующие действия:

  1. Перейти к Изменить > Project Настройки > Игрок > iOS настройки > Другие Настройки.
  2. В разделе Конфигурация установите IL2CPP Информация о Stacktrace до Имя метода, имя файла и номер строки.

Примечание: Использование этой опции может увеличить как время сборки, так и окончательный размер программы.