使用GDB调试android模拟器
使用android的模拟器可以调试应用,也可以调试C/C++代码库。
调试C/C++代码时,还可以使用GDB单步调试代码,跟linux上一样方便。
1. 准备android代码:从官网上下载代码,编译整个系统,最好选X86的选项
$source buid/envsetup.sh
$lunch
Lunch menu... pick a combo:
1. aosp_arm-eng
2. aosp_arm64-eng
3. aosp_mips-eng
4. aosp_mips64-eng
5. aosp_x86-eng
6. aosp_x86_64-eng
7. aosp_shamu-userdebug
8. aosp_hammerhead-userdebug
9. aosp_mako-userdebug
10. aosp_flounder-userdebug
11. aosp_manta-userdebug
12. aosp_grouper-userdebug
13. aosp_tilapia-userdebug
14. aosp_deb-userdebug
15. aosp_flo-userdebug
16. full_fugu-userdebug
17. aosp_fugu-userdebug
18. m_e_arm-userdebug
19. mini_emulator_x86-userdebug
20. mini_emulator_arm64-userdebug
21. mini_emulator_mips-userdebug
22. mini_emulator_x86_64-userdebug
不同的系统,选项次序可能不同。在PC机上用模拟器调试最好直接选用x86的编译选项
2. 编译得到的系统便可以启动模拟器运行,如果要启用GPU加快渲染速度,使用: emulator -gpu on
以调试httplive为例,说明如何调试C/C++代码
1. 由于httplive属于android多媒体服务,因此,可以查看media的线程号来调试
$adb shell ps
system 937 1 10204 848 813e089c b2eda017 S /system/bin/servicemanager
root 938 1 16184 2608 ffffffff 9c993ab7 S /system/bin/vold
system 939 1 37664 4168 ffffffff d13ee93a S /system/bin/surfaceflinger
root 941 1 9924 760 8110c261 acaa993a S /system/bin/qemud
shell 944 1 10156 1104 81237267 5621c9f7 S /system/bin/sh
root 945 1 13244 524 ffffffff 0042472a D /sbin/adbd
root 946 1 12012 1604 8103d5cc 67b16a7a D /system/bin/netd
root 947 1 10884 1060 813f581c f7684003 S /system/bin/debuggerd
root 948 1 11084 1224 813f581c eac4cc7a S /system/bin/debuggerd64
radio 949 1 15736 1864 ffffffff b9313ab7 S /system/bin/rild
drm 950 1 24192 4492 ffffffff f761fe66 S /system/bin/drmserver
media 951 1 30272 6608 8109bebb f776dbd9 D /system/bin/mediaserver
install 952 1 10216 876 813f581c e9026c7a S /system/bin/installd
keystore 953 1 14616 2728 813e089c 2738d017 S /system/bin/keystore
root 954 1 382728 27000 ffffffff 2461825d D zygote64
root 955 1 358568 21804 ffffffff f3a03246 D zygote
root 963 2 0 0 8106d1a8 00000000 S kauditd
graphics 983 1 34252 7780 ffffffff 6e130017 S /system/bin/bootanimation
root 1242 945 12264 1476 00000000 6cbf59f7 R ps
root 1244 946 12012 464 00000000 67ab91a8 R /system/bin/netd
$gdbclient 951
在某一行打断点:b xxx.cpp:35
接着继续运行: c
2. 启动应用上的播放器,可以看到gdb已经可以运行了,这个时候的调试就跟linux上的gdb完全一样了
3. 由于android上的gdb 调试属于远程调试,因此,无法像linux上一样继续重新运行:run
需要退出当前的gdb,重新进入,这个时候就需要把media进程杀掉,重新看一下media属于那个线程号,重复步骤1
尽管gdb的调试比linux上要麻烦点,但是能够单步调试,对于开发者来说已经很方便了。
使用GDB调试android模拟器相关推荐
- Eclipse+CDT+GDB调试android NDK程序
http://www.cnblogs.com/shadox/archive/2011/12/02/2272564.html Eclipse+CDT+GDB调试android NDK程序 Eclipse ...
- 使用 GDB 调试 Android 应用
GNU 工程调试器(GDB)是一个常用的 Unix 调试器.本文详述使用 gdb 调试 Android 应用和进程的方法. 调试运行中的应用或进程 gdbclient 是源码库中的一个 shell 脚 ...
- Ubuntu下正确姿势使用GDB调试Android Native进程
Ubuntu下正确姿势使用GDB调试Android Native进程 前言 对于Android Native进程大家是既爱又恨啊,爱的是它能为我们的Android世界带来别样的精彩,狠的是 ...
- 使用gdb调试Android(aarch 64)可执行二进制文件
Android官方提供了调试ndk进行 使用场景 在pc端编写Android可执行程序(注意不是App进程程序,这里指的是一个可执行文件比如linux的ELF文件.windows exe文件) 现在市 ...
- android 模拟器so调试,[求助]IDA 7.0 调试Android模拟器 so文件的问题
taotao_su 但是设断点不能断,也不能单步执行,出各种奇怪的signals可能是什麽原因呢? 另外虽然模拟器x86, 但是app是arm的,有关系吗? 我在雷電模調試一個flutter app遇 ...
- gdb调试android
手机端 adb shell gdbserver --mulit *:23333 /data/local/tmp/test 电脑 target remote 192.168.1.170:23333 ...
- Android 模拟器下载、编译及调试
Android 模拟器源码下载 Android 模拟器源码的下载与 Android AOSP 源码库的下载过程类似,可以参考 Google 官方提供的 Android 源码下载文档 来了解这个过程. ...
- android程序启动之后 eclipse ndk-gdb 连接,Eclipse+CDT+GDB调试android-NDK程序(补足六个汉字).docx...
Eclipse+CDT+GDB调试android NDK程序 Eclipse+CDT+gdb调试android ndk程序 先介绍一下开发环境,在这个环境下,up主保证是没有问题的. ubuntu 1 ...
- android+模拟器上gdb,使用gdb在Android Emulator中进行调试c程序
1.下载Android Debugging Utilities 2.启动Android Emulator模拟器 $ emulator @1.5_R2 3.把gdb和调试文件以及源代码放到模拟器上 $ ...
最新文章
- mysql扩展中如何处理结果集_我们如何处理MySQL存储过程中的结果集?
- Python内置函数(57)——setattr
- C# async await 学习笔记1
- java thread join()_Java Thread join() 的用法
- Zend Studio 10.6正式版注册破解地址
- linux 自动清理var log,Linux 系统 /var/log/journal/ 垃圾日志清理-Fun言
- less加管道tail_Linux-10 (CentOS)cat/more/less/ / 及echo/head /tail/的用法区别
- iOS在应用中添加自定义字体
- 超赞,1万字的后端面试题及面试经验分享!
- Solved: RDP Disconnected – Error Code 2825 mremote
- 腾讯信鸽推送php,腾讯信鸽推送业务封装类-PHP版
- wind python接口手册_wind量化平台-用户手册(python).pdf
- 黑群晖文件服务器,折腾NAS,入手黑群晖
- 计算机二进制乘法运算(原码,补码)
- IP属地靠谱吗?或是一把双刃剑
- 公司职员薪水管理系统(List)
- python拦截游戏封包_【求助】关于pygame封包问题
- 微信小程序请求wx.request报400(Bad Request)解决
- linux 的常用命令---------第十三阶段(NFS与DHCP服务,scp用法)
- CRC16校验使用体验
热门文章
- MVC 洋酒销售系统的设计与实现java jsp 程序设计 课程设计 毕业设计-附源码02135
- 怎么查mysql数据库版本信息查询_mysql 查询版本(mysql查询数据库版本信息)
- 三星a52设置杜比全景声教程
- ROS+Bebop2无人机+YOLO算法实现无人机视角的实时目标检测
- SqlcommandBuilder Sqlcommand sqldataAdapter DataSet DataTable
- centos卸载harbor_在Linux主机使用命令行批量删除harbor镜像
- CPU和GPU前端的应用
- java基于ssm+vue的学院办公用品管理信息系统
- 游戏脚本多线程与中控台完整详解
- Python百度文库爬虫之txt文件