如下图:通过搜索 logcat 抓到的日志,只能定位到图中 哪个pid 进程 ID ,tid 线程 ID 出现了问题,开发者无法直观的排查错误原因 [8qdiciva4a.png] 使用ndk-stack...我们可以使用ndk-stack 打印对应的崩溃日志 使用方法 要使用 ndk-stack,您首先要有一个包含未剥离版应用共享库的目录。...例如 adb logcat | $NDK/ndk-stack -sym $PROJECT_PATH/obj/local/armeabi-v7a 您也可以使用 -dump 选项将 logcat 指定为输入文件...例如: adb logcat > /tmp/foo.txt $NDK/ndk-stack -sym $PROJECT_PATH/obj/local/armeabi-v7a -dump foo.txt 该工具会在开始解析...java层调用传入空值: [image.png] 3.最后在Terminal中入命令 adb logcat | /Users/pj1053/Library/Android/sdk/ndk-bundle/ndk-stack
三、ndk-stack工具 工具位置: ?...ndk-stack可以直接从日志中分析出堆栈的错误信息,能够直接帮助我们定位到错误的位置,一步到位; 我们可以直接把logcat中的错误信息输入给ndk-stack,也可以使用ndk-stack来分析crash...的日志(比如平台上报的crash数据); ndk-stack -sym F:\hello-jni\obj\local\armeabi\ 或者: ndk-stack -sym F:\hello-jni\obj...\local\armeabi\ -dump crash.log 用ndk-stack对本文中出现的日志分析,输入如下信息,和用addr2line工具得到的结果是一样的: ********** Crash
spm=1001.2014.3001.5501 3、Crash调试手段: Android的NDK调试工具ndk-stack,ndk-stack是ndk开发工具包下提供的好用工具,能结合崩溃日志给出详细分析...; 基础用法: ndk-stack -sym 带有符号表的so所在的目录 -dump 崩溃日志: 比如 ~/Library/Android/sdk/ndk/android-ndk-r16b/ndk-stack
工欲善其事必先利其器,使用add2line 和ndk-stack等工具分析JNI Crash的log addr2line 作用是根据内存地址找到对应的报错代码的文件名和行号 所在目录是toolchain...execution,后面是包含符号库的文件 以及报错的内存地址(即Crash log里pc后的字段) arm-linux-androideabi-addr2line -f -e xxx.so 0x8eb09258 ndk-stack...作用是一键生成更可读的Crash 日志 所在目录是 /media/kyle/a393d005-ebe5-42a0-8c6a-c86fdfb185c1/Android/Sdk/ndk-bundle/ndk-stack...用法: # -sym表示symbols ndk-stack -sym App/build/intermediates/transforms/mergeJniLibs/release/0/lib/对应的...abi目录 -dump jniCrash.log 或者 adb logcat | ndk-stack -sym App/build/intermediates/transforms/mergeJniLibs
== 0 ] then getStackTrace fi } 3.4 ndk-stack ndk-stack也是非常有用的工具,它需要结合崩溃时的Tombstone(墓碑文件)进行分析。...ndk-stack用法如下 usage: ndk-stack.py [-h] -sym SYMBOL_DIR [-i INPUT] Symbolizes Android crashes....unstripped .so files -i INPUT, -dump INPUT, --dump INPUT input filename ndk-stack...下面我们看下通过命令adb bugreport来拿下墓碑文件,然后结合ndk-stack分析的过程 adb bugreport . unzip bugreport-OnePlus5T-QKQ1.191014.012...-2021-11-28-14-49-22.zip cd FS/data/tombstones 可以看到多个墓碑文件,我们拿最近的一个进行分析 ndk-stack -sym /Users/yangbin
ANDROID_HOME/build-tools/android-4.4/aapt d badging MSDKDemo-development-2.6.2.13_55206.apk | grep package ndk-stack...ndk-stack 是一个可以将.so文件的地址映射到相应的编译此.so文件的.h/.cpp的具体地址的工具,是JNI层的Crash的问题定位神器。
ndk-stack Android NDK自从版本r6开始,提供了一个工具ndk-stack。这个工具能自动分析tombstone文件,能将崩溃时的调用内存地址和C++代码一行一行对应起来。...ndk-stack工具同样也位于NDK包中,它的路径如下所示: $NDK_HOME/ndk-stack ndk-stack的使用说明如下所示: Usage: ndk-stack -sym PATH [...ndk-stack的基本用法如下所示: adb logcat | $NDK_HOME/ndk-stack -sym /Users/inke/AndroidStudioProjects/NDKPractice
Android Native开发的人员而言,可能经常会在开发过程及线上环境中遇到Native Crash的问题,对于这类native crash,我们一般都会直接addr2line,或使用ndk中附带的ndk-stack...但是ndk-stack是不会对build id不匹配的库进行分析的。
(2)ndk-stack Android NDK 自从版本 r6开始, 提供了一个工具 ndk-stack。.../ndk-stack Usage: ndk-stack -sym [-dump ] -sym Contains full path to the root...If ommited, ndk-stack will read input data from stdin See docs/NDK-STACK.html in your...NDK installation tree for more details. dump 参数很容易理解, 即 dump 下来的 log 文本文件. ndk-stack会分析此文件。...我们可以使用它来分析我们的log文件 ndk-stack -sym xxx.so -dump logfile 所以我们在调试android系统源码的时候也可以直接分析log中的crash信息。
开发调试 Android开发调试常用工具例如:apktool、dex2jar、aapt、ndk-stack、jd-gui等可以参考之前的一篇文章:Android开发调试常用工具(http://blog.bihe0832
0x9000) 可以看到,crash信息描述了发生crash的abi架构、crash的原因以及堆栈backtrace; 一般有两种方式可用来分析native层crash的backtrace: 6.1 ndk-stack...命令 ndk-stack命令位于{NDK_root}/ndk-stack,使用时需要将crash的log复制到一个txt文件中,这个命令会从txt中的 A/DEBUG: *** *** *** ***...*** *** *** *** *** *** *** *** *** *** *** *** 后面开始分析,使用方法如下: # 用法:ndk-stack -sym ${SO_PARENT_DIR} -...crash_log.txt # -sys so所在目录,即${SO_PARENT_DIR},注意必须是目录名,不是so路径; # -dump 发生crash的log信息,即crash_log.txt; # 示例: >ndk-stack
常用的地址转换工具有addr2line、ndk-stack等,个人比较喜欢addr2line,所以接下来介绍下该工具的基本使用方式 addr2line简介 使用-h参数查看工具的可选参数配置 日常使用过程中
启动adb命令,如下: adb logcat | ndk-stack -sym D:\workplace\****\obj\local\armeabi-v7a 2.
具体来说,当拿到Logcat输出的堆栈日志,再结合addr2line和ndk-stack两款调试工具,就可以很够精确地定位到相应发生错误的代码行数,进而迅速找到问题。...其中,ndk-stack放在$NDK_HOME目录下,与ndk-build同级目录。addr2line在ndk的交叉编译器工具链目录下。...2bc2e11d57f839316bf2a42bbfdf943a) 首先,找到关键信息Cause: null pointer dereference,但是我们不知道发生在具体哪里,所以接下来我们需要借助addr2line和ndk-stack...7.2 ndk-stack 除此之外,还有一种更简单的方式,直接输入命令。...adb logcat | ndk-stack -sym /Users/xzh/development/AllInOne/app/build/intermediates/cmake/debug/obj/arm64
/data/data/com.sankuai.meituan.takeoutnew/app_flutter/vm_snapshot_instr 单纯这些信息很难定位问题,所以我们需要使用NDK提供的ndk-stack...来解析出具体的代码位置: ndk-stack -sym PATH [-dump PATH] Symbolizes the stack trace from an Android native crash...执行ndk-stack即可看到实际发生崩溃的代码和具体行数信息: ndk-stack -sym flutter-production-syms/06afdfe54ebef9168a90ca00a6721c2d36e6aafa
wufengxue.github.io/2020/06/22/wechat-voice-codec-SEGV_MAPERR.html 有效参考分析工具 https://developer.android.com/ndk/guides/ndk-stack
backtrace 注意,上图除了#00 pc,其他的值并不是pc寄存器的值,而是已经减去了动态库加载的基地址,还原成了动态库中的相对地址 ---- 不同信息用不同工具来分析: addr2line, ndk-stack...ndk提供了简化工具ndk-stack,可以直接输入日志输出还原的调用栈。...例如 adb logcat > /tmp/foo.txt$NDK/ndk-stack -sym $PROJECT_PATH/obj/local/armeabi-v7a -dump foo.txt 使用
解压,CHANGELOG.md、build、ndk-build、ndk-depends、ndk-gdb、ndk-stack、ndk-which、platforms、prebuilt、python-packages
ANR的原因及出现的地方(找到main thread),如果只是在主线程中Thread.sleep(10S),会不会出现ANR JNI层的Crash怎么定位(通过ndk中相应的工具addr2line ndk-stack
关于如何在native中排查错误,可以使用ndk-stack工具,使用方法贼简单,一个命令行的事儿,这里就不说了。
领取专属 10元无门槛券
手把手带您无忧上云