如何逐步使用ndk-stack?

14

我正在尝试调试这个错误:

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 Studio中的sdk manager下载了Android NDK,现在在我的sdk目录下有一个ndk-bundle文件夹。
我已经将上述错误日志保存在error.txt中,并希望理解它。根据这文档,我认为应该使用-dump选项。
$NDK/ndk-stack -sym $PROJECT_PATH/obj/local/armeabi-v7a -dump error.txt

文档说:
要使用ndk-stack,首先需要一个包含未剥离版本的应用程序共享库的目录。
FYI,我不知道那可能是什么。
如果您使用ndk-build,则可以在$PROJECT_PATH/obj/local/中找到这些未剥离的共享库,其中ABI是您的设备的ABI。
但我没有这个目录,也不知道如何制作它。
我从未使用过ndk。
我尝试了这个instruction,但没有成功。甚至无法使make工作。(讽刺)
请您能否给我一份逐步说明?逐步地。
TL;DR:
我有以上错误日志,需要您帮助我理解它。
我对ndk以及如何使用它进行构建一无所知。
感谢您的耐心。我知道这个问题可能很愚蠢。
1个回答

9
很遗憾,这个崩溃与NDK无关,您在这种情况下无法从ndk-stack中学到任何东西。
让我解释一下。 ndk-stack是一种工具,用于解码自己本地代码中的崩溃日志。在这里,您没有本地代码进行调试。此应用程序在系统库中崩溃,您无法获取此特定设备的调试信息(这些系统库的未剥离版本)。
如果您知道如何在Android模拟器上重现此崩溃,则有机会进一步调试此本地崩溃。但最可能的是,这是一个与本地代码无关的错误。也许,在画布被丢弃后,您尝试绘制到画布上。

你能看一下我的问题吗?https://stackoverflow.com/questions/71758040/how-to-use-ndk-stack-in-android-studio?我有类似的问题,但我确定错误来自我的本地代码。 - Jan Rozenbajgier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接