help//帮助 i//info i b//info break查看所有断点信息 i r//info registers 查看各个寄存器当前的值 i f//info function 查看所有函数名,保留符号 show //和info相似,但是是查看调试器的基本信息 show args//查看参数 backtrace//查看调用堆栈 q//quit退出
b*(0x123456)//给0x123456地址的指令下断点 b*$rebase(0x123456)//$rebase在调试开PIE的程序的时候可以直接加上程序的随即地址 b func_name//给函数func_name下断点,目标文件要保留符号才行 b file_name:func_name b file_name:15//给file_name的15行下断点,需要有源码 b 15 b +0x10//在程序当前停住的位置下0x10的位置下断点,也可以-0x10,就是前0x10 break fun if $rdi==5//条件断点,rdi的值为5的时候才断
x /nuf 0x123456//x指令的格式是:x /nfu,nfu代表三个参数 n//代表显示几个单元(而不是显示几个字节,后面的u表示一个单元多少个字节),放在'/'后面 u//代表一个单元几个字节,b(一个字节),h(两个字节),w(四字节),g(八字节) f//代表显示数据的格式,f和u的顺序可以互换,也可以只有一个或者不带n x 按十六进制格式显示变量。 d 按十进制格式显示变量。 u 按十六进制格式显示无符号整型。 o 按八进制格式显示变量。 t 按二进制格式显示变量。 a 按十六进制格式显示变量。 c 按字符格式显示变量。 f 按浮点数格式显示变量。 s 按字符串显示。 b 按字符显示。 i 显示汇编指令。 x /10gx 0x123456//从0x123456开始每个单元八个字节,十六进制显示十个单元的数据 x /10xd $rdi//从rdi指向的地址向后打印十个单元,每个单元四字节的十进制数 x /10i 0x123456//从0x123456处向后显示十条汇编指令
打印指令p(print)
1 2 3 4 5 6
p func_name//打印func_name的地址,需要保留符号 p 0x10-0x8//计算0x10-0x8的结果 p &a//查看变量a的地址 p *(0x123456)//查看0x123456的值 p $rdi//显示rdi寄存器的值 p *($rdi)//显示rdi指向的值
打印汇编指令disass(disassemble)
1 2
disass 0x123456//显示0x123456前后的汇编指令 x /10i //前面说过了
打印源代码list
1 2 3 4
list//查看当前附近10行的代码 list38//查看28行附近10行的代码 list1,10//查看1-10行代码 list main//查看main函数的开始10行