GDB BASIC
指令
misc
disas (函数名) #在gdb里反汇编某函数,查看某句指令的地址,好下断点
vm(virtual memory)
at [进程id] #连接到目标进程调试
b (num) #在num行下断点,或者加一个地址,在目标地址下断点
r #重新运行文件
start #单步执行,运行程序,停在第一执行语句
next或n #单步调试(逐过程,不进入函数)
step或s #单步调试(逐语句,会进入函数)
finish #跑完这个函数
c #继续运行到下一断点
bt #查看函数的调用栈帧和层级关系
set 目标变量名($寄存器名) = 值
p 目标变量名( $寄存器名) #查看目标变量
info registers #查看所有寄存器
heapinfo #查看heap的状态
x命令
格式:x/<n/f/u> < addr>
n:是正整数,表示需要显示的内存单元的个数,即从当前地址向后显示n个内存单元的内容,一个内存单元的大小由第三个参数u定义。
f:表示addr指向的内存内容的输出格式,此处需特别注意输出整型数据的格式:
s 对应输出字符串变量。
x 按十六进制格式显示变量。
d 按十进制格式显示变量。
u 按十六进制格式显示无符号整型。
o 按八进制格式显示变量。
t 按二进制格式显示变量。
a 按十六进制格式显示变量。
c 按字符格式显示变量。
f 按浮点数格式显示变量。
(i 应该是按汇编语言显示)
u:就是指以多少个字节作为一个内存单元-unit,默认为4。当然u还可以用被一些字符表示,如
b=1 byte, h=2 bytes, w=4 bytes, g=8 bytes.
多窗口
layout:用于分割窗口,可以一边查看代码,一边测试。主要有以下几种用法:
layout src:显示源代码窗口
layout asm:显示汇编窗口
layout regs:显示源代码/汇编和寄存器窗口
layout split:显示源代码和汇编窗口
layout next:显示下一个layout
layout prev:显示上一个layout
Ctrl + L:刷新窗口
Ctrl + x,再按1:单窗口模式,显示一个窗口
Ctrl + x,再按2:双窗口模式,显示两个窗口
Ctrl + x,再按a:回到传统模式,即退出layout,回到执行layout之前的调试窗口。