ko挂死/内核挂死/coredump问题
objdump命令:
对目标文件(obj)或可执行文件进行反汇编,可以生成对应的函数,地址信息文件.
DEBUG方法:
1.反汇编方法, 用objdump生成信息与函数名,然后加偏移找到需要查看位置(makefile 有可能要开-g进行调试)
2.用addr2line查看地址对应的文件及代码行数.根据第一步生成地址信息和函数名,然后加偏移找到需要查看位置
命令:
arm-linux-gnueabi-objdump -S -D inputfile >outputfile.txt
使用GCC编译生成的:
arm-linux-gnueabi-objdump -d test.ko > obj_dump_d.txt
arm-linux-gnueabi-addr2line -e test.ko 0xxxxxx
使用Clang编译的:
cd out/target/product/xx/obj/KERNELOBJ/
aarch-linux-android-addr2line -e vmlinux.o 0xXXXXXX
动态库挂死问题
GCC编译的:
在out/target/product/XXXXXX/symbols/system/lib目录下进行库的addr2line(必须加-e的参数):
arm-linux-androideabi-addr2line -e xxxxx.so 0xXXXX
加"-f"参数:把指把函数名打印出来
arm-linux-androideabi-addr2line -e xxx.so 0xxxxx -f
加"-fa"参数: 会打印文件、函数名以及地址
arm-linux-androideabi-addr2line -e libgkbsp.so 0xXXXX -fa
Clang编译的:
llvm-addr2line -Cfe xx.so 0xXXXX
Android环境 假如我圈起来那行是最终PC指针所在的位置.在 out/target/product/XXXXX/symbols/system/lib
目录中:
arm-linux-gnueabi-addr2line -e libskia.so 15787f