Android上gdb+gdbserver调试初体验

本文介绍了在Android设备上使用gdb和gdbserver进行远程调试的步骤,包括准备gdbserver和gdb,将gdbserver推送到设备并赋予执行权限,调试APP,以及解决调试过程中遇到的问题,如防ptrace机制和NDK提供的gdb限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


工作需要gdb+gdbserver调试Android程序,在网上查了一堆资料,有点乱,自己总结一下。


开发环境:

1. 开发机,MacBook Pro

2. 目标手机,Nexus 4 Android4.3.1


需要准备的东西:

1. gdbserver,我理解远程调试需要在目标机上有个类似调试服务器的东西来给gdb传送数据什么的,所以需要这个东西,在网上看的资料各种在线下载或者交叉编译什么的才能得到这个东西,其实不用那么麻烦,NDK里自带~,位置:$NDK_DIR/prebuild/android-arm/gdbserver

2. gdb,这个不用说了,也是NDK里自带,位置:$NDK_DIR/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-gdb,中间的路径根据自己情况更改。

需要注意的是gdbserver和gdb的版本要匹配,否则会出错。


准备步骤:

1. 先要在目标手机的/data目录下建一个目录bin,然后把gdbserver push到这个/data/bin/目录下,然后运行chmod 777 gdbserver增加执行权限。

2. 在目标手机上运行你要调试的APP,获取这个APP的进程号,比如是18440,然后在目标手机的命令行下执行./gdbserver :1234 --attach 18440,输出如下:

root@mako:/data/bin # ./gdbserver :1234 --attach 18440                &n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值