前言
最近崩溃平台有BUG,native的崩溃堆栈解析不出来,只能自己线下人肉解堆栈了。本着能善用工具提高工作效果的习惯,最终收获了如下的zshe脚本(方法)用于后续的工作,借此笔记跟大家分享与交流,供大家参考之
分享产物
// xxx.so是我关注出现崩溃的so
stackwalk=/Applications/Android\ Studio.app/Contents/plugins/android-ndk/resources/lldb/bin/minidump_stackwalk
# for minidump
stackwalk=/Applications/Android\ Studio.app/Contents/plugins/android-ndk/resources/lldb/bin/minidump_stackwalk
# for minidump
function dumpaddr() {
${stackwalk} -s $1 | grep libxxx.so | head -n $2
}
function adumpaddr() {
${stackwalk} -s $1 | grep libxxx.so | head -n $2 | awk -F"+" '{print $2}' | xargs -I {} llvm-addr2line -p -f -C -e $3 {}
}
具体说明
首先我们回顾一下地址解析命令,即add2line。我的环境下配置的是这样的
$ type llvm-addr2line
llvm-addr2line is /Users/luo/Library/Android/sdk/ndk/23.0.7599858/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-addr2line
add2line的输入是带有调试符号信息的so文件,还有我们想解析的崩溃堆栈地址,如

本文介绍了如何利用zsh脚本和addr2line工具,自动化解析Android应用的崩溃堆栈信息,特别是在面对minidump_stackwalk命令无法解析的BUG时,提供了一个名为'dumpaddr'的函数,用于从dump文件中筛选出指定库的地址,并通过'adumpaddr'函数转换为函数行号,提高了崩溃分析的效率。
最低0.47元/天 解锁文章
7274

被折叠的 条评论
为什么被折叠?



