众所周知,linux上gdb是一个功能非常非常强大的工具,纵然使用多年,回头一看,仍然觉得还是掌握了很小很小一部分的代码。android是基于linux的平台,所以google在android上开发了很多类linux的调试工具,如arm-linux-androideabi-gcc-ar, arm-linux-androideabi-gcc, arm-linux-androideabi-g++ 等等,如果掌握了这些工具,就像外科医生可以做出出色的手术,我们可以定位android平台上的各种疑难杂症。
Android对于C/C++代码的调试方式一般选用gdb+gdbserver的方式,其中gdbserver运行在手机端,gdb运行在主机上(如linux)。
不多说,上步骤,手机以android 9.0为例, 主机以ubuntu 14.04为例。
以调试mediaserver为例;
由于mediaserver是32位的二进制程序,我们需要用32位的gdbserver来调试;
如果调试64位的二进制程序 ,需要用到64位的gdbserver64来调试。
1、手机端准备
1.1 查看gdbserver是否存在
首先查看手机端,system/bin 目录下是否存在 gdbserver二进制,
一般userdebug版本的手机都会有这个二进制,
如果没有,直接在代码的prebuilts/misc/android-arm/gdbserver目录中,找到gdbserver,push到手机中。