Bug

使用gdb离线调试Android coredump文件记录

adtxl
2023-05-24 / 0 评论 / 599 阅读 / 正在检测是否收录...

使用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信息

image.png

使用Android自带的这个x86版本的gdb竟然可以,也是不知道为啥。。。。。。

./prebuilts/gdb/linux-x86/bin/gdb
0

评论 (0)

取消