Символизация трассировки стека¶
Если приложение 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немедленно завершается с успехом, убедитесь, что входные данные поступают из трубы или перенаправления, а не из терминала.