工作需要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