gdb和gdbserver调试android应用与可执行

这篇博客介绍了如何利用gdb和gdbserver在Android 5.0及更高版本中动态调试dex2oat进程。内容包括在本地系统和Android设备上设置gdbserver,通过adb映射端口,以及在gdb中连接远程目标,设置断点和执行调试。
摘要由CSDN通过智能技术生成

学习android5.0以后的ART虚拟机,看了看源码,比较头疼,决定通过动态调试的方式去学习。

Art虚拟机有一个dex2oat的可执行程序。就想到了通过gdb和gdbserver来debug这个dex2oat。


记录一下调试方法:


gdb运行在本地系统(windows/linux)

gdbserver运行在android真机/模拟器上(adb shell ls /system/bin查看是否有gdbserver,如果没有,可以从源代码prebuild文件夹中获取,也可以从ndk的文件中获取)


Ps:gdb和gdbserver的版本要一致,不然会出错的



一:“


1,准备工作

1-1,在prebuild文件夹中找到gdb和gdbserver的可执行文件(ndk中也有)

1-2,把gdbserver 通过adb shell push进system/bin

1-3,把dex2oat需要的hello.jar给push到/data/test/中


2,通过adb在android模拟器中通过gdbserver关联相关的进程或者启动相关进程

2-1,gdbserver关联相关的进程 : adb shell gdbserver :端口号1234--attach 进程pid

(进程pid可以通过adb shell ps查看,调试应用可以attach system_process(没有测试))


2-2,gdbserver启动相关的进程: adb shell gdbserver :端口号1234 dex

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值