Eclipse 调试Android Framework C篇

1 环境准备
 eclipse+CDT

 gdb debugger,我这里是 /work/n88/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-gdb

 framework编译结果,我这里根目录是/work/n88/out/target/product/rk3168

2 配置【以调试Android Audio为例子,目标程序是mediaserver】

  2.1 新建Debug Configurations,C/C++ Remote Application,如下图,C/C++ Application选择 mediaserver,Disable auto build


2.2 配置Debugger

点击Debugger,GDB Debugger选择为/work/n88/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi-gdb

GDB command file选择为/work/n88/3168_gdb.setup,这个文件设置了符号文件的搜索路径,通用配置,可以多加些路径,内容如下

set solib-search-path /work/n88/out/target/product/rk3168/symbols/system/bin:/work/n88/out/target/product/rk3168/symbols/system/lib:/work/n88/out/target/product/rk3168/symbols/system/lib/hw:/work/n88/out/target/product/rk3168/symbols/system/lib/egl:/work/n88/out/target/product/rk3168/symbols/system/lib/soundfx:/work/n88/out/target/product/rk3168/symbols/system/vendor/lib/hw:/work/n88/out/target/product/rk3168/symbols/system/vendor/lib:/work/n88/out/target/product/rk3168/symbols/system/lib/soundfx


2.3 配置Source,添加Absolute File Path


这一步可以忽略,等eclipse找不到文件再locate file就可以


常用的话,可以点击Common,在Display in favorites menu中选择Debug

3 调试
3.1 在主机上打开终端,输入命令
adb forward tcp:10000 tcp:1234 #注意这个的10000是上面配置中,gdb debugger缺省的连接端口
pids=`adb shell ps|grep mediaserver|tail -n 1|awk '{print $2}'` #查找mediaserver的进程ID
adb shell "gdbserver :1234 --attach $pids" #attach 到mediaserver

3.2 eclipse中打开刚刚添加的配置,开始调试
正常,3.1中的终端会看到连接信息 Remote debugging from host 127.0.0.1
之后就是设置断点,等待触发了,比如在status_t AudioFlinger::PlaybackThread::Track::start 中设置断点,系统每次播放声音都会触发该断点


4 其他
上面的办法无法调服务的试初始化过程,可以修改init.rc,直接用gdbserver启动服务。
初始化不是很快的的初始化过程,也可以用脚本重启服务,然后立即attach到gdbserver。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值