如下图:通过搜索 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
使用 NDK 提供的 ndk-stack 工具来符号化堆栈信息:$ANDROID_NDK_HOME/ndk-stack -sym /path/to/your/app/build/intermediates...如果使用了,按照上面的方法,使用 ndk-stack 工具对原生堆栈进行符号化。第三步:简化与定位二分法:如果最近有代码变更,尝试使用二分法回退代码,定位是哪一次提交引入的问题。...使用 ndk-stack 工具,传入包含上述 backtrace 的日志文件和你的 libmyjnilib.so 的带调试信息的版本(通常在 build/intermediates 目录下)。...ndk-stack 会输出类似的结果:my_buggy_function 位于 /path/to/your/jni/src/my_file.c:123。...2如果使用了 JNI/NDK,使用 ndk-stack 工具对原生堆栈进行符号化,定位到源代码。3检查 JNI 调用是否正确(参数、异常处理、线程)。
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
(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 Native开发的人员而言,可能经常会在开发过程及线上环境中遇到Native Crash的问题,对于这类native crash,我们一般都会直接addr2line,或使用ndk中附带的ndk-stack...但是ndk-stack是不会对build id不匹配的库进行分析的。
开发调试 Android开发调试常用工具例如:apktool、dex2jar、aapt、ndk-stack、jd-gui等可以参考之前的一篇文章:Android开发调试常用工具(http://blog.bihe0832
崩溃分析:逆向符号化与智能归因开发者价值:NDK崩溃逆向:即使 so 符号表剥离 也能还原有效信息# 示例:解析arm64崩溃地址(需集成NDK工具链)$ ndk-stack -sym .
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