GDB+gdbserver 远程调试android native code
来源:互联网 发布:第三届数据新闻大赛 编辑:程序博客网 时间:2024/05/17 21:57
一、什么是gdb?
它是gnu组织开发的一个强大的unix程序调试工具,我们可以用它来调试Android上的C、C++代码。
它主要可以做4件事情:
1、随心所欲地启动你的程序。
2、设置断点,程序执行到断点处会停住。(断点可以是表达式)
3、程序被停住后,可以查看此时程序中发生的事。
4、动态改变程序的执行环境一。
我们需要使用gdbserver依附到我们要调试的进程上,gdb通过adbd和手机上的gdbserver进行socket通信。
二、远程调试实战
1、在手机上启动gdbserver并attach你想调试的进程,并指定监听调试命令的端口(此端口是手机上的端口)
$ adb shell
# ps #查看要调试进程的PID
# gdbserver :1234 --attach 96 #:1234是端口号,96 是进程ID
2、使用adb做端口映射,将pc机上的端口定向到手机上gdbserver监听的端口
$ adb forward tcp:1234 tcp:1234 #端口映射,将pc机的1234端口映射到手机的1234端口
3、启动gdb向指定的pc机端口发信息开始调试
android_project_root/prebuilt/linux-x86/arm-eabi-4.4.3/$ ./arm-eabi-gdb #使用项目下的gdb客户端去连接gdbserver,gdb的类型要选择针对手机平台的,版本要和gdbserver一致。
<gdb> target remote :1234 #连接本地的:1234端口,此端口已经和手机的1234端口做好映射。
<gdb> file xxx/out/target/xx...xx/symbols/system/bin/mediaserver #加载可执行程序,注意选择symbols下的,如果调试的进程是app进程,这里选择app_process。
<gdb> set solib-search-path xxx/out/target/xx...xx/symbols/system/lib #加载所有的动态连接库,注意选择symbols下的。
<gdb> bt #查看调用堆栈
<gdb> list xxx/xxx..xxx/xxx.cpp #查看相关文件
<gdb> b 100 #在文件的第100行打断点
<gdb> c #继续执行程序
- GDB+gdbserver 远程调试android native code
- GDB + gdbserver 远程调试android native code
- 用gdb和gdbserver调试android native code
- gdbserver + gdb 远程调试
- Android gdbserver远程调试native程序方法
- gdb+gdbserver远程调试技术
- eclipse gdb gdbserver 远程调试
- GDB+Gdbserver ARM远程调试
- android gdbserver 远程调试
- gdb调试及gdbserver远程调试
- 用GDB远程调试android native程序
- 编译安装gdb+insight和gdbserver远程调试arm开发板native应用程序
- uclinux使用gdb和gdbserver远程调试
- 用gdb和gdbserver远程调试tq2440
- 远程调试应用程序之gdb+gdbserver
- 交叉编译gdb+gdbserver实现远程调试
- 配置GDB+GdbServer远程调试环境
- gdb + gdbserver 远程调试(应用程序)
- Shell 备份文件
- Android 4.0开发之GridLayOut布局实践
- asp.net 读取Word
- rman create script and execute script
- Linux 2.6 下通过 ptrace 和 plt 实现用户态 API Hook
- GDB+gdbserver 远程调试android native code
- asp.net 读取word 文档的方法新随笔 1. net 学习线路图,csdn真给力啊!
- Java传值&传引用
- android 隐藏键盘二
- fannnnnnnnnnnn -- qiangggggggggg
- java基本类型的小把戏
- 鸟哥的linux私房菜
- VC多线程临界区(转)
- 命令行修改MYSQL密码