GDB + GDB server环境安装

环境: pc = windows7 x64
phone = Android 4.03 (需要 root 权限)
准备:
        gdbserver 可以在 NDK 目录下的 prebuilt 文件夹内找到(如下图所示,在三个 Android-
开头的文件夹中都有 gdbserver 文件夹,里面的 bin 文件就是编译好的 gdbserver ,根据自己
cpu 选择对应的 bin 程序,一般情况是 arm ),找到后可在对应文件的上级目录找到

 
        Windows 下的 gdb 文件在 NDK 目录下的 toolchains 文件下,同样寻找对应的 cpu 的文
件夹如图

        一般选择 arm-linux-androideabi –x.x ,然后在其 \prebuilt\windows-x86_64\bin 子目录可
以看到下图所示:
        其中 arm-linux-androideabi-gdb.exe 就是我们要找的 gdb 程序(其他 cpu 请找对应的 gdb
可执行程序),这里为了方便使用,我将改目录加入了 path 环境变量,同时将 arm-linux
androideabi-gdb.exe 复制重命名为 gdb
如果找不到,可在 NDK 的根目录下直接搜索 gdb gdbserver ,从结果中寻找。
第一步:手机端运行 gdbserver
        在 cmd 控制台下使用 adb push 命令发送进手机,并使用“ adb shell chmod 777 +gdbserver
路径”的方法给文件可执行的权限,使用 cd 命令进入 gdbserver 所在目录,使用“ ./ gdbserver
启动服务(这里有个小技巧,可以将文件 push /system/bin/ 目录,以后执行的时候就不需
cd gdbserver 所在目录了,不过直接 push 可能 push 不到,需要在 pc cmd 控制台下
输入“ adb remount ”之后再 push ,如果执行 chmod 时出现权限不够,请在 adb shell 命令
后增加 su 命令即“ adb shell su …. ”,以 root 权限运行,执行前请确认手机已经 root ,否则
可能会报错)
        重新打开一个 cmd 窗口使用“ adb forward tcp:23946 tcp:23946 ”对模拟器的数据进行转
发(如果在同一局域网内,不需要设置这步,这里设置是设置对于模拟器上数据的端口转发
pc 本地)
gdbserver 的启动命令有两种:
        一种是 attach 方式,调试已经启动的程序;
        一种是使用 gdbserver 启动程序的方式(这种方式我只会启动 bin 程序);
两种方式的命令格式分别为:
        gdbserver :23946 + bin 程序路径
        gdbserver :23946 –-attach [PID]
        其中:23946 gdbserver 之间有空格请注意,数字代表 listen port ,可自己设置,不过注
意上面的 adb forward 转发也需要同步修改。 (使用 ps 命令可以查看要当前系统运行的进程的 PID ,执行是请检查自己的权限,最好 是 su root 权限)
第二步: pc 端运行
        运行 gdb,如图所示

依次输入: set disassemble-next on (打开这个,显示汇编代码)
                  set step-mode on (打开单步调试)
                  target remote 127.0.0.1:23946 (连接上远程调试的 gdbserver ,同理如果是通过
wifi 或者其他网络进行调试,将 ip 修改为手机 ip 即可)
下图为连接上的视图
        接下来你就可以使用 b 设置断点, c 运行至断点, s n 进行单步调试 附: gdb 常用命令:  
b *0xFFFF 给这个地址下断点,注意前面的 * 0x
c 继续运行到断点
s 等价于 step into
n 等价于 step over
bt 查看堆栈
info registers 查看寄存器内容
info b 查看断点信息
delete break [n] 删除编号为 n 的断点
disas 0xFFFF,+20 显示这个地址后面 20 行内的汇编指令
kill 终止进程
file 加载文件(用这个命令可以加载符号表)(需要注意的是,这个指令的默认目录为
C:\Users\user ,建议将需要加载的文件复制过来加载)
help 获取帮助信息
ps gdb 功能强大,不过限于我的水平,使用的不是很好,更多的功能请使用 help 命令、参
gdb 使用手册或者百度学习之。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值