android - 如何一步步使用ndk-stack?

标签 android android-ndk ndk-build ndk-stack

我正在尝试调试此错误:

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

我从this中学到了问题是我应该使用 ndk-stack 来获取错误日志的含义。

所以我在 Android Studio 中使用 sdk 管理器 下载了 Android NDK,现在我的 sdk 中有一个 ndk-bundle 文件夹目录。

我已将上述错误日志保存在 error.txt 中,并想了解它。 根据这个documentation我想我应该使用 -dump 选项。

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

文档说:

To use ndk-stack, you first need a directory containing unstripped versions of your app's shared libraries.

仅供引用,我不知道那可能是什么。

If you use ndk-build, these unstripped shared libraries are found in $PROJECT_PATH/obj/local/, where is your device's ABI.

但是我没有目录,不知道怎么弄。

我从未使用过ndk

我试过这个 instruction但没有运气。甚至无法使 make 工作。 (讽刺)

你能给我一个循序渐进的指导吗?字面意思是一步一步

长话短说:

我有上面的错误日志,需要你帮我理解。

我对 ndk 以及如何使用它进行构建一无所知。

感谢您的耐心等待。我知道这个问题可能很愚蠢。

最佳答案

不幸的是,这次崩溃与 NDK 无关,在这种情况下您无法从 ndk-stack 中学到任何东西。

让我解释一下。 ndk-stack 是一种在您自己的 native 代码中解密为崩溃日志的工具。在这里,您没有要调试的 native 代码。此应用程序在系统库中崩溃,您无法获取此特定设备的调试信息(这些系统库的未剥离版本)。

如果您知道如何在 Android 模拟器上重现此崩溃,您就有机会进一步调试此原生崩溃。但最有可能的是,这是一个与 native 代码无关的错误。也许,您在 Canvas 被丢弃后尝试在 Canvas 上绘图。

关于android - 如何一步步使用ndk-stack?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54160680/

相关文章:

gradle - 如何将 Gradle 链接到原生 Android 库并解决 'could not find method externalNativeBuild()' ?

java - Android ListView setOnItemClickListener 不工作

android - 如何获取 View 在坐标中的位置?

android - 在具有外部依赖性的 Android NDK 中使用 C 库

c++ - 为什么 NDK 编译器无法识别 LOCAL_CFLAGS 定义?

安卓调试ndk-gdb

android - 弹跳按钮 flutter

android - MutableLiveData<Pair<Float, Float>>() -> Val 不能被重新赋值

android - 无法在Eclipse中使用NDK生成APK文件

android - 使用 Android NDK 的 native 代码的代码覆盖率