#android #android-ndk #crash-reports #huawei-mobile-services #huawei-developers
#Android #android-ndk #отчеты о сбоях #huawei-мобильные сервисы #huawei-разработчики
Вопрос:
Я интегрировал службу сбоев Huawei в соответствии с документацией, и я могу видеть сбои NDK в веб-консоли. Однако адреса в отчетах смещены на 4, поэтому, когда я хочу обозначить сбой, я получаю неверный результат.
Например, в logcat я вижу
2020-12-10 15:23:51.981 5914-5914/? D/formatEventInfo: statck
#00 pc 00c57c10 /data/app/package-name-w5yGIc9ek_yTyk1ARvNP-w==/lib/arm64/libName.so(std::set_unexpected(void (*)())) [arm64-v8a::]
#01 pc 00c57d88 /data/app/package-name-w5yGIc9ek_yTyk1ARvNP-w==/lib/arm64/libName.so(unknow) [arm64-v8a::]
#02 pc 00c54b54 /data/app/package-name-w5yGIc9ek_yTyk1ARvNP-w==/lib/arm64/libName.so(unknow) [arm64-v8a::]
#03 pc 00c5425c /data/app/package-name-w5yGIc9ek_yTyk1ARvNP-w==/lib/arm64/libName.so(__cxa_get_exception_ptr) [arm64-v8a::]
#04 pc 00c541dc /data/app/package-name-w5yGIc9ek_yTyk1ARvNP-w==/lib/arm64/libName.so(unknow) [arm64-v8a::]
и что адреса отображаются в веб-консоли, в то время как действительная трассировка стека сбоев logcat
--------- beginning of crash
2020-12-10 15:23:52.067 6246-6246/? I/crash_dump64: obtaining output fd from tombstoned, type: kDebuggerdTombstone
2020-12-10 15:23:52.068 871-871/? I//system/bin/tombstoned: received crash request for pid 5914
2020-12-10 15:23:52.069 6246-6246/? I/crash_dump64: performing dump of process 5914 (target tid = 5914)
2020-12-10 15:23:52.099 6246-6246/? A/DEBUG: pid: 5914, tid: 5914, name: o.a.b >>> package-name <<<
2020-12-10 15:23:52.104 6246-6246/? A/DEBUG: #01 pc 0000000000c57c0c /data/app/package-name-w5yGIc9ek_yTyk1ARvNP-w==/lib/arm64/libName.so
2020-12-10 15:23:52.104 6246-6246/? A/DEBUG: #02 pc 0000000000c57d84 /data/app/package-name-w5yGIc9ek_yTyk1ARvNP-w==/lib/arm64/libName.so
2020-12-10 15:23:52.104 6246-6246/? A/DEBUG: #03 pc 0000000000c54b50 /data/app/package-name-w5yGIc9ek_yTyk1ARvNP-w==/lib/arm64/libName.so
2020-12-10 15:23:52.104 6246-6246/? A/DEBUG: #04 pc 0000000000c54258 /data/app/package-name-w5yGIc9ek_yTyk1ARvNP-w==/lib/arm64/libName.so
2020-12-10 15:23:52.104 6246-6246/? A/DEBUG: #05 pc 0000000000c541d8 /data/app/package-name-w5yGIc9ek_yTyk1ARvNP-w==/lib/arm64/libName.so (__cxa_throw 120)
Есть какие-нибудь идеи?
Ответ №1:
Отчет о сбое, который вы получили, верен. Номера строк (00c57c10, 00c57c0c и т. Д.) Не Обязательно Должны точно совпадать. Поскольку сегмент адреса представляет собой диапазон, например, ваши 00c57c10 и c57c0c могут находиться в одном и том же адресе вашего файла. Если вы загрузите собственный файл символов, вы можете получить читаемый отчет о сбое.
Здесь вы можете увидеть пример: Получение отчета о сбое NDK
Похоже, вы потеряли свой uuid из-за некоторых ошибок в ваших файлах: [arm64-v8a::];[arm64-v8a::]… Они должны быть с uuid.
Документация службы аварийного отключения AppGallery Connect
Комментарии:
1. К сожалению, это не относится ко мне, поскольку я получаю разные номера строк (фактически, разные функции) в своем исходном коде, когда я обозначаю оба журнала сбоев. Во-первых, почему адреса журналов сбоев, о которых сообщалось, должны отличаться от адресов в logcat?
2. @sruzic Да, после анализа разных чисел (00c57c10, 00c57d88) вы получите тот же отчет о сбое с теми же номерами строк файла (…native.crash.creat, cpp: 14).
3. Вы меня не поняли. Когда я обозначаю первый журнал сбоев (
#00 pc 00c57c10, #01 pc 00c57d88, ...
) Я получаю один ( неправильный ) набор номеров строк, и когда я обозначаю второй журнал сбоев (#01 pc 0000000000c57c0c, #02 pc 0000000000c57d84, ...
) Я получаю другой ( правильный — потому что я знаю, где я специально создал исключение, просто чтобы проверить отчет о сбое NDK) набор номеров строк.4. Размер моего архивированного файла собственных символов превышает 5 МБ, поэтому я не могу его загрузить.
5. @sruzic Хорошо, но, похоже, вы разместили два отчета в обратном порядке. Второй отчет о сбоях получен от службы сбоев Huawei.