gdb 调试常用命令

运行命令

run简写r 运行程序,当遇到断点后,程序会在断点处停止运行
continue简写c 运行到下一个断点
next简写n 执行下一步语句,不进入函数
step简写s 执行下一步语句
until运行到循环体结束
until 行数运行到某一行
call 函数(参数)调用函数
finish运行程序,直到当前函数完成返回,并打印函数返回时的堆栈地址和返回值及参数值等信息。

断点设定(b / break)

断点
info b查看所有断点
b n打断点在n行
b filename:n断点在某个文件的n行
b n if a > b条件断点设置
b func函数断点设置
b filename:fun某个文件中的某个函数断点
delete 断点号n删除断点
enable 断点号n使能断点n
disable 断点好n暂停断点n
clear 行号n清除第n行断点
delete breakpoints清除所有断点

显示源码

list简记为 l ,其作用就是列出程序的源代码,默认每次显示10行。
list 行号将显示当前文件以“行号”为中心的前后10行代码
list 函数将显示“函数名”所在函数的源代码
list不带参数,将接着上一次 list 命令的,输出下边的内容。

打印表达式(p/print)

p 变量名打印变量名
p 表达式打印表达式结果
p fun(2)将以整数2作为fun函数的参数
p fun(变量名)将变量作为fun函数的参数
p $寄存器名输出当前寄存器地址和值
display 表达式在单步调试后都显示表达式的值
watch 表达式设置一个监视点,一旦被监视的“表达式”的值改变,gdb将强行终止正在被调试的程序
whatis 变量/函数查看变量或函数的类型
info funciton 函数名查看函数
info funcitons查看所有函数
info locals查看当前函数所有的堆栈页的所有变量

查看运行信息

bt/where当前运行的堆栈列表
bt backtrace显示当前调用堆栈
up/down改变堆栈显示的深度
show args查看设置好的参数
info program来查看程序的是否在运行,进程号,被暂停的原因。
set args 参数指定运行时的参数

分割窗口

layout src显示源代码窗口
layout asm显示饭反汇编窗口
layout regs显示源代码/反汇编和CPU寄存器窗口
layout split显示源代码和反汇编窗口

info

i register打印寄存器的值(不包括浮点型)
i all-registers打印所有寄存器的值
i registers 寄存器名/ p $eax输出当前寄存器的值
set var $pc=0x08050949设置pc寄存器的值为0x08050949
info line 行号打印出当前行号的其实地址
disassemble main打印main函数的汇编代码

查看内存中的值

x/ <n/f/u> <addr>

n显示长度,从当前地址向后显示几个地址(units)的值。
f显示的格式(format)。默认使用十六进制格式。
u表示(the unit size) 从当前地址往后每一个值的位宽大小。如果不指定的话,GDB默认是4个bytes。当我们指定了位宽长度后,GDB会从指内存定的内存地址开始,读写指定位宽大小

显示格式(format)

x(hexadecimal)按十六进制格式显示变量。
d(signed decimal)按十进制格式显示变量。
u(unsigned decimal)按十进制格式显示无符号整型。
o(octal)按八进制格式显示变量。
t(binary)按二进制格式显示变量。
a(address)按十六进制格式显示地址,并显示距离前继符号的偏移量(offset)。常用于定位未知地址(变量)。
c(character)按字符格式显示变量。
f(floating)按浮点数格式显示变量。

位宽大小(the unit size)

b表示单字节
h表示双字节
w表示四字 节
g表示八字节

在这里插入图片描述

  • 23
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值