Символизация трассировки стека¶
Если приложение React Native выбрасывает необработанное исключение в сборке релиза, вывод может быть обфусцирован и трудночитаем:
1 2 3 4 5 6 |
|
Секции типа p@1:132161
— это минифицированные имена функций и смещения байткода. Чтобы отладить проблему, вам нужно перевести ее в имя файла, строки и функции: AwesomeProject/App.js:54:initializeMap
. Это известно как символизация. Вы можете символизировать минифицированные имена функций и байткод, как описано выше, передав metro-symbolicate
сгенерированную карту исходного кода и трассировку стека.
Пакет metro-symbolicate
устанавливается по умолчанию в проект шаблона React Native из настройки среды разработки.
Из файла, содержащего трассировку стека:
1 |
|
Непосредственно из adb logcat
:
1 |
|
Это превратит каждое минифицированное имя функции и смещение типа p@1:132161
в реальное имя файла и функции AwesomeProject/App.js:54:initializeMap
.
Примечания по картам исходных текстов¶
- В процессе сборки может быть создано несколько карт исходных текстов. Убедитесь, что используете ту, которая находится в месте, указанном в примерах.
- Убедитесь, что используемая вами карта исходного кода соответствует точному коммиту сбойного приложения. Небольшие изменения в исходном коде могут вызвать большие различия в смещениях.
- Если
metro-symbolicate
немедленно завершается с успехом, убедитесь, что входные данные поступают из трубы или перенаправления, а не из терминала.