利用addr2line分析堆栈异常

最近在调屏过程中遇到开不了机的情况,卡在Android启动过程中,从日志分析只能看到堆栈信息,无法看到具体报错行,为此,需要借助addr2line工具定位信息。

logcat输出如下:

先查看这行栈信息看有没发现:#01 pc 0002c591 /vendor/lib/hw/hwcomposer.amlogic.so

怎么查看呢?address2line 是android ndk工具里自带有,目录在

C:\Users\Motern\AppData\Local\Android\Sdk\ndk-bundle\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin\arm-linux-androideabi-addr2line.exe

使用方法如下:

①.根据报错日志找到报错的库文件,如我要查看这行“#01 pc 0002c591 /vendor/lib/hw/hwcomposer.amlogic.so”,

在系统编译出的symbols符号表找到对应文件,/vendor/lib/hw/hwcomposer.amlogic.so对应的则是

out\target\product\w400\symbols\vendor\lib\hw\hwcomposer.amlogic.so

②.address2line 命令行格式:

arm-linux-androideabi-addr2line -e 【file】-s -f -C [addr(s)]

file:表示要分析的库文件,这里是out\target\product\w400\symbols\vendor\lib\hw\hwcomposer.amlogic.so

addr表示栈地址,这里是0002c591 .

输出如下:

这样我们可以看到程序在DualDisplayPipe.cpp第35行报错。

查看DualDisplayPipe.cpp,可以猜测程序报错是因为配置了双屏,而实际程序获取到屏幕数并没有两个,故抛出异常,我们再查看dts是否配置了双屏确认猜测。

果然,配置的是“dual”双屏,改成单屏“default”,重新编译烧录,顺利进入Android桌面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值