GDB使用方法

来源:互联网 发布:波尔津吉斯体测数据 编辑:程序博客网 时间:2024/05/16 14:20

GDB使用

print  variable        查看变量print  *array@len      查看数组(array是数组指针,len是需要数据长度)缩写为p

可以通过添加参数来设置输出格式:

/x   按十六进制格式显示变量。/d   按十进制格式显示变量。/u   按十六进制格式显示无符号整型。/o   按八进制格式显示变量。/t   按二进制格式显示变量。/a   按十六进制格式显示变量。/c   按字符格式显示变量。/f   按浮点数格式显示变量。

2 examine 查看内存

examine /n f u + 内存地址(指针变量)缩写为x

n 表示显示内存长度
f 表示输出格式(见上)
u 表示字节数制定(b 单字节;h 双字节;w 四字节;g 八字节;默认为四字节)
如:
x /10cw pFilePath (pFilePath为一个字符串指针,指针占4字节) 查看pFilePath后的10个字符
x /x p (p是一个int*) 以16进制形式查看p指向内容(默认p大小为4字节,长度为1即4个字节)

3 disassemble 查看汇编

disassemble 不加参数会显示整个程序的汇编码,后面可以加函数名,或地址范围。
nexti stepi 和 next step 的区别在于不是执行一条C语句而是一条机器指令即一条汇编语句。
x /ni $pc 或 display /ni $pc (其中n是数字) 用来查看下面将要执行的n条汇编语句,区别在于后者GDB每次停下都会显示下面将要执行的n条汇编语句而前者只显示这一次,对于后者可以用 undisplay 来取消。
Emacs下可以GUD->GDB window->disassembly.

4 display

可以用 display variable-name 使GDB每次暂停时都显示指定变量,前面的 display /i $pc 显示下条汇编语句。
用 undisplay variable-name 取消每次都显示, undisplay不加参数表取消所有显示,display不加参数显示一次所有每次暂停都要显示的内容。

5 list

可以查看即将执行的语句.

6 until

后跟行数,表一直执行到第几行。也可以跟函数名表遇到此函数就暂停。

7 finish

从一个stack中返回,即退出当前函数(在主函数中没用)

8 查看寄存器

info registers 查看所有寄存器的内容。
p $eax 查看指定寄存器的内容。

9 快捷键

手册

C-x SPC在光标所在行设置断点C-c C-sstepC-c C-nnextC-c C-istepiC-c C-rrunC-c C-bbreakpoint 当前行C-c C-d删除当前执行行处的断点C-c C-t当前行设置临时断点C-c C-uuntil 光标所在的行C-c C-ffinish

10 Trick

  1. 不退出GDB,重新编译源码,此时再继续使用GDB时会检测到执行文件有更新会重新加载执行文件。
  2. 加载执行文件 file filename ,可以用 cd 切换目录
  3. 删除所有断点 delete breakpoints
0 0
原创粉丝点击