您的当前位置:首页正文

gdb

2020-08-11 来源:步旅网
1、gdb调试工具

gcc -g -o sum sum.c gdb ./sum 调试命令: file --> 指定调试文件

list/l --> 查看原代码(默认10行) list n --> 列出n附近的10行代码 run/r --> 运行

break/b --> 设置断点 如: b main b 10 info breakpoints/i b --> 查看所有的断点

delete breakpoints /d b number--> 删除断点 next/n --> 单步运行下一行代码(遇到函数调用不会进入函数内运行) step/s --> 单步运行下一行代码(遇到函数调用会进入函数内运行) print/p

set variable 变量名=值 until/u 26 --> 跳到某行

finish --> 跳出函数(finish不能简写成f) quit/q --> 退出gdb

display /i $pc

同时显示c代码和汇编代码 disassemble 函数名 查看指定函数的反汇编代码

1) 查看寄存器

info registers或者i r 查看寄存器的情况

info all-registers或者i r a 查看所有寄存器的情况

info registers eip或者p $eip

查看指定寄存器

2) 查看内存

(gdb) x /x 0x80040000 # 以16进制显示指定地址处的数据 (gdb) x /s 0x86468700 # 以字符串形式显示指定地址处的数据 (gdb) x /d 0x86468700 # 以十进制形式显示指定地址处的数据 (gdb) x /o 0x86468700 # 以八进制形式显示指定地址处的数据

(gdb) x /t 0x86468700 # 以二进制形式显示指定地址处的数据

(gdb) x /d $ebp-0x8 # 以十进制形式显示寄存器ebp中的值减去0x8后地址处的

数据 x 按十六进制格式显示变量。

d 按十进制格式显示变量。

u 按十六进制格式显示无符号整型。 o 按八进制格式显示变量。 t 按二进制格式显示变量。 a 按十六进制格式显示变量。 c 按字符格式显示变量。 f 按浮点数格式显示变量。 3) 修改寄存器的值

(gdb) set $v0 = 0x004000000 (gdb) set $epc = 0xbfc00000

4) 修改内存的值

(gdb) set {unsigned int}0x8048a51=0x0

2、objdump工具 objdump -xd sum.o objdump -xd sum

将.o目标文件或可执行文件进行反汇编

因篇幅问题不能全部显示,请点此查看更多更全内容