使用gdb离线调试Android coredump文件
步骤
1.aosp源码目录执行:
./prebuilts/gdb/linux-x86/bin/gdb
or 使用本机机器上的gdb
gdb-multiarch
2.进入gdb后设置symbols路径
set solib-absolute-prefix xxx/symbols
3.设置在symbols目录中药调试的文件,如果是app,可以选择app_process
file xxx/symbols/system/bin/app_process32
4.加载coredump文件
core-file xxx/COREDUMP
问题记录
问题1:在ubuntu18上安装gdb
在ubuntu上安装gdb-multiarch时,遇到下面的报错,也就是无法访问下面这个网站。
从网上找了两个个方案:
方案一就是把下面这个网站替换成一个国内的源
方案二可以直接把这个源给注释掉
由于是在公司内部,换源也是无法访问的,所以这里直接注释掉。修改/etc/apt/sources.list.d/目录里的文件,把有这个源的都注释掉。
错误:67 http://ppa.launchpad.net/fcitx-team/nightly/ubuntu bionic InRelease
无法发起与 ppa.launchpad.net:80 (2620:2d:4000:1::3e) 的连接 - connect (101: 网络不可达) 无法连接上 ppa.launchpad.net:80 (185.125.190.52),连接超时
错误:68 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu bionic InRelease
无法发起与 ppa.launchpad.net:80 (2620:2d:4000:1::3e) 的连接 - connect (101: 网络不可达)
已下载 44.7 MB,耗时 30秒 (1,474 kB/s)
正在读取软件包列表... 完成
问题2:使用aarch64版本的gdb提示 don't know how to handle section `.relr.dyn' [0x 13]?
目标平台cpu是arm64的,编译的Android image是arm32,按照道理应该是使用arm版本的gdb调试。
不过实际使用开发机gcc-6.3.1-2017这个版本里的gdb调试时,确有问题,bt也无法获取trace信息
使用Android自带的这个x86版本的gdb竟然可以,也是不知道为啥。。。。。。
./prebuilts/gdb/linux-x86/bin/gdb
评论