最近在调屏过程中遇到开不了机的情况,卡在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桌面。


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



