Управляемые трассировки стека на iOS
При возникновении исключения в управляемом коде трассировочный стек для исключения может помочь понять причину исключения. Однако в некоторых случаях на iOS трассировочный стек управляемого кода может отображаться не так, как ожидалось. Кроме того, трассировочный стек варьируется в зависимости от конфигурации сборки Xcode.
Отладочные сборки
При использовании конфигурации сборки отладки с iOS, IL2CPP сообщит надежный управляемый трек стека и включит каждый управляемый метод в стек вызова. Трек стека не включает номера строк из исходного кода C#.
Релизные сборки
Когда вы используете конфигурацию сборки выпуска, IL2CPP может создать стек вызовов, в котором отсутствует один или несколько управляемых методов. Это происходит потому, что компилятор C++ встроил отсутствующие методы. Встроение методов обычно хорошо для производительности во время выполнения, но может затруднить понимание стеков вызовов. IL2CPP всегда предоставляет по крайней мере один управляемый метод в стеке вызовов. Это метод, в котором произошло исключение. Он также включает другие методы, если они не встроены.
Если вы можете воспроизвести исключение локально, используйте Xcode, чтобы найти встроенные методы. Запустите приложение в Xcode, используя конфигурацию выпуска, и установите точку останова исключения. Вид стека вызова в Xcode покажет, какие методы действительно существуют, а какие были встроены.
Номера строк исходного кода
По умолчанию стеки вызовов IL2CPP не включают информацию о номерах строк исходного кода в конфигурации отладки или выпуска. Вы можете включить номера строк исходного кода, выполнив следующие действия:
- Перейти к Изменить > Project Настройки > Игрок > iOS настройки > Другие Настройки.
- В разделе Конфигурация установите IL2CPP Информация о Stacktrace до Имя метода, имя файла и номер строки.
Примечание: Использование этой опции может увеличить как время сборки, так и окончательный размер программы.