使用gdb调试android用户态代码

文章描述了如何在Windows环境下利用虚拟机搭建Linux系统,以配合Android系统的编译调试。通过使用预置在Android源码中的gdbserver和gdb,避免版本不匹配问题。配置包括将gdbserver推送到设备,设置调试信息,使用adb进行端口转发,以及在Windows上配置端口代理以连接gdbserver进行远程调试。同时强调了关闭防火墙和杀毒软件网络防护的必要性。

环境部署

        如图,windows上运行虚拟机,虚拟机中安装linux系统,主要用于android 系统编译调试环境。至于为什么要这样搞,而不直接在windows上运行gdb程序是因为运行于设备上的gdbserver要和运行于调试pc上的gdb要配套。而目前windows上gdb编译的程序往往是很老的。但是linux环境下的gdbserver和gdb程序是和android编译环境完全匹配的,并且已经预制在android源代码中了(具体位置可以在prebuilts/gdb下找到)。

环境配置

  1. 将gdbserver(64位系统使用gdbserver64)push到调试设备任意可执行目录,将匹配的gdb放到虚拟机系统中。
  2. 增加调试信息到待调试的代码中
    一般需要在cflags中增加 -g -O0选项,并且不strip调试信息
    // Android.bp中增加,对二进制不做strip
    strip : {
        none :ture,
    }

    用带调试信息的二进制替换调试设备中的同名二进制。

  3. 配置网络环境
    调试设备上的配置
    在调试设备上启动gdbserver,设定调试端口(此处我们选择9999端口做gdb调试端口)
    // 比如我们使用9999端口调试1号init进程
    gdbserver64 :9999 --attach 1 
    
    // 另开一个adb 窗口配置端口转发,将调试设备9999端口的tcp报文转发到本机9999端口
    adb
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值