Как использовать ndk-stack пошагово? - PullRequest
0 голосов
/ 12 января 2019

Я пытаюсь отладить эту ошибку:

01-12 13:38:18.068 275-275/? I/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
01-12 13:38:18.068 275-275/? I/DEBUG: Build fingerprint: 'samsung/a53gxx/a53g:5.0.2/LRX22G/A500HXXU1BOJ2:user/release-keys'
01-12 13:38:18.068 275-275/? I/DEBUG: Revision: '10'
01-12 13:38:18.068 275-275/? I/DEBUG: ABI: 'arm'
01-12 13:38:18.068 275-275/? I/DEBUG: pid: 19854, tid: 19854, name: arif.mercuryapp  >>> com.hermessharif.mercuryapp <<<
01-12 13:38:18.068 275-275/? I/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
01-12 13:38:18.098 275-275/? I/DEBUG:     r0 00000000  r1 00000000  r2 00000001  r3 b6ecbf44
01-12 13:38:18.098 275-275/? I/DEBUG:     r4 b879ebe0  r5 00000000  r6 be9e0c60  r7 00000000
01-12 13:38:18.098 275-275/? I/DEBUG:     r8 00000000  r9 b93ee710  sl 00000000  fp be9e0ce8
01-12 13:38:18.098 275-275/? I/DEBUG:     ip b51084dc  sp be9e0c10  lr b4effde7  pc b6e67204  cpsr 600f0030
01-12 13:38:18.098 275-275/? I/DEBUG: backtrace:
01-12 13:38:18.098 275-275/? I/DEBUG:     #00 pc 00090204  /system/lib/libandroid_runtime.so (GraphicsJNI::getNativeCanvas(_JNIEnv*, _jobject*)+11)
01-12 13:38:18.098 275-275/? I/DEBUG:     #01 pc 00091c31  /system/lib/libandroid_runtime.so
01-12 13:38:18.098 275-275/? I/DEBUG:     #02 pc 00277099  /system/framework/arm/boot.oat
01-12 13:38:19.468 275-275/? I/DEBUG: Tombstone written to: /data/tombstones/tombstone_04

Я узнал из этого вопроса, что я должен использовать ndk-stack, чтобы получить значение журнала ошибок.

Итак, я загрузил Android NDK, используя sdk manager в Android Studio, и теперь у меня есть папка ndk-bundle в моем каталоге sdk.

Я сохранил выше журнал ошибок в error.txt и хочу разобраться в этом. В соответствии с этой документацией я думаю, что я должен использовать опцию -dump.

$NDK/ndk-stack -sym $PROJECT_PATH/obj/local/armeabi-v7a -dump error.txt

Документация гласит:

Чтобы использовать ndk-stack, вам сначала понадобится каталог, содержащий несвязанные версии общих библиотек вашего приложения.

К вашему сведению, я понятия не имею, что это может быть.

Если вы используете ndk-build, эти несвязанные общие библиотеки находятся в $ PROJECT_PATH / obj / local /, где находится ABI вашего устройства.

Но у меня нет каталога, и я не знаю, как его создать.

Я никогда не использовал ndk.

Я попробовал эту инструкцию , но безуспешно. Не могу даже заставить make работать. (Иронично)

Не могли бы вы дать мне пошаговую инструкцию? буквально пошагово .

TL; DR:

У меня есть вышеупомянутый журнал ошибок, и вы должны помочь мне понять его.

Я ничего не знаю о ndk и как вы строите с ним.

Спасибо за ваше терпение. Я знаю, что вопрос может быть глупым.

1 Ответ

0 голосов
/ 13 января 2019

К сожалению, этот сбой не имеет ничего общего с NDK, и в этом случае вы ничего не узнаете из ndk-stack.

Позвольте мне объяснить. ndk-stack - это инструмент для расшифровки как журнал сбоев в вашем собственном коде. Здесь у вас нет собственного кода для отладки. Это приложение упало в системной библиотеке, и вы никак не можете получить отладочную информацию (несвязанную версию этих системных библиотек) для этого конкретного устройства.

Если вы знаете, как воспроизвести этот сбой на эмуляторе Android, у вас есть шанс продолжить отладку этого собственного сбоя. Но, скорее всего, это ошибка, которая не связана с нативным кодом. Возможно, вы пытались нарисовать на холсте после того, как он был отброшен.

...