其中packet-data字段预置如下值:
https://sourceware.org/gdb/current/onlinedocs/gdb/Remote-Protocol.html
? 停止原因
! 扩展模式
A arglen,argnum,arg,... 传入参数
B addr,mode 设置断点
bc 反向调试 continue
bs 反向调试 singlestep
c [addr] 从地址 continue
C sig[;addr] 以信号 Continue
D 分离gdb
D;pid 分离进程
F RC,EE,CF;XX File I/O Operation(lldb不支持)
g 读取通用寄存器(一般的),返回的数据为编码过的二进制数据,内容由对应架构文件定义(调试器常常先使用p命令,失败再使用g命令)
G XX… 写入通用寄存器(小写命令为读,大写为写,下同)
H op thread-id 设置线程状态
i [addr[,nnn]]
I
m addr,length 读取内存,返回16进制字符串(调试器会尝试x命令,失败会尝试m命令)
M addr,length:XX... 写内存
p n 读取指定寄存器,n为架构定义值
P n...=r... 写寄存器
q name params... 通用查询包,详细见后
Q name params... 通用查询包,详细见后
r 重启
R XX 重启进程
s [addr] 单步
S sig[;addr] 单步
t addr:PP,MM 按模式搜索内存
T thread-id 检测线程存在
vAttach;pid 附加进程
vCont[;action[:thread-id]]... continue
vCont? 获取coninue的action:c-continue;C sig-continue with sig;s-step;S sig-step with sig;t-stop
vCtrlC 中断程序运行
vFile:operation:parameter... 文件操作(lldb不支持)
vKill;pid 结束进程
vRun;filename[;argument]... 运行进程
vStopped
x addr,length 读内存
X addr,length:XX... 写内存
z type,addr,kind 移除断点
Z type,addr,kind 增加断点
z0,addr,kind 移除软件断点
Z0,addr,kind[;cond_list...][;cmds:persist,cmd_list...]增加软件断点
z1,addr,kind 移除硬件断点
Z1,addr,kind[;cond_list...][;cmds:persist,cmd_list...]增加硬件断点
z2,addr,kind 移除观察写断点
Z2,addr,kind 增加观察写断点
z3,addr,kind 移除观察读断点
Z3,addr,kind 增加观察读断点
z4,addr,kind 移除观察访问断点
Z4,addr,kind 增加观察访问断点
{ARM Z0/Z1 kind=>2=16bitthumb mode bp kind=>3=32bit Thumb-2mode bp kind=>4=32bit ARM mode bp}