Собственные отчеты о сбоях содержат смещенные адреса

#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.