GDB常用的命令行参数

1.查看文件

在GDB中输入l(list)就可以查看所载入的文件
在这里插入图片描述

2.设置断点

用break来设置断点。下面有几种设置断点的方法

break function

在进入指定函数时停住。

break linenum

在指定行号停住。

break +offset, break -offset

在当前行的前面或后面的offset行停住。offset为自然数。

break filename: linenum

在源文件 filename的linenum行停住。

break filename: function

在源文件filename的function函数入口处停住。

break *address

在程序运行的内存地址处停住。

3.查看断点

使用info命令
info breakpoints [n]
info break [n]
info b [n]

4.运行代码

输入r(run)即可(GDB默认从首行开始运行代码,若是想从程序中指定行开始运行,可在后r后面加上行号)。

5.查看变量值

p +变量。

6.恢复程序和单步运行

使用continue命令恢复程序的运行直到下一个断点或程序结束。
使用step或者next来单步执行。
step:单步运行,遇到函数则进入函数
next:单步运行,不会进入函数

7.GDB命令行常用参数

选项含义
–help
-h
列出命令行参数
–exec=file
-e file
指定可执行文件
–core=core-file
-c core-file
指定core文件
–command=file
-x file
从指定文件中读取GDB命令
–directory=directory
-d directory
把指定目录加入到源文件搜索路径中
–cd=directory以指定目录作为当前路径来运行GDB
–nx
-n
不要执行.gdbinit文件中的命令。
默认情况下,这个文件中的命令会在所有命令行参数处理完成后执行
–batch在非交互模式下运行GDB。从
–symbols=file
-s file
从指定文件中读取符号表
-write允许对可执行文件和core文件进行写操作
–quiet
-q
不要打印介绍和版权信息
–tty=device指定device为运行程序的标准输入和输出
–pid=process-id
-p process-id
指定要附属的进程ID

8.GDB基本命令

8.1 查看基本信息相关命令

命令描述
help列出GDB帮助信息
help topic列出相关话题中的GDB命令
help command列出命令描述信息
apropos search-word搜索相关的话题
info argsi args列出运行程序的命令行参数
info breakpoints列出断点
info break列出断点号
info break breakpoint-number列出指定断点的信息
info watchpoints列出观察点
info registers列出使用的寄存器
info threads列出当前的线程
info set列出可以设置的选项

8.2 断点操作相关命令

命令描述
break function
break line-number
在指定的函数,或者行号处设置断点
break +offset
break -offset
在当前停留的地方前面或后面的几行处设置断点
break file:func在指定的file文件中的第func处设置断点
break file:nth在指定的file文件中的第nth行设置断点
break *address在指定的地址处设置断点。一般在没有源代码时使用
break line-number if condation如果条件满足在指定位置设置断点
break line thread thread-number在指定的线程中中断。使用info threads可以显示线程号
tbreak设置临时的断点。中断一次后会被删除
watch condition当条件满足时设置观察点
clear
clear func
clear nth
清除函数func处的断点
清除第nth行处的断点
delete
d
删除所有断点或观察点
delete breakpoint-number
delete range
删除指定的断点、观察点
disable
breakpoint-number-or-range
enable
breakpoint-number-or-range
不删除断点,仅仅把它设置成为无效,或有效
例子:
显示断点: info break
设置无效:disable 2-9
enable oncebreakpoint-number设置指定断点有效,当到达断点时设置为无效
enable delbreakpoint-number设置指定断点有效,当到达断点时删除它
finish继续执行到函数结束

8.3 单步调试相关命令

命令描述
step
s
进入下一行代码的执行,会进入函数内部
step number-of-steps-to-perform进入下一行代码的执行,会进入函数内部
next
n
next number
执行下一行代码。但不会进入函数内部
until
until line-number
继续运行直到到达指定行号,或者函数、地址等
return
return expression
弹出选中的栈帧(stack frame)。如果后面指定参数,则返回表达式的值
stepi
si
nexti
ni
执行下一条汇编/CPU指令
info signals info handle handle
SIGNAL_NAME option
当收到信号时执行下列动作:nostop(不要停止程序),stop(停止程序执行),print(显示信号),noprint(不显示),pass/noignore(允许程序处理信号),nopass/ignore(不让程序接受信号)
where显示当前的行号和所处的函数

8.4 调试栈信息相关命令

命令描述
backtrace
bt
bt inner-function-nesting-depth
bt -outer-function-nesting-depth
显示当前堆栈的追踪,当前所在函数
backtrace full打印所有局部变量的值
frame number
f number
选择指定的栈帧
up number
down number
向上或向下移动指定个数的栈帧
info frame addr描述选中的栈帧
info args
info all-reg
info locals
info catch
显示选中栈帧的参数、局部变量、异常处理函数。all-reg也会列出浮点寄存器

8.5 查看代码相关命令

命令描述
list
l
list line-number
list function
list start#,end#
list filename:function
列出相应的源代码
set listsize count
show listsize
设置list命令打印源代码时的行数
directory directory-name
dir directory-name show
directories
在源代码路径前添加指定的目录
directory当后面没有参数时,清除源代码目录

8.6 打印变量相关命令

命令描述
print variable
p variable
p file::variable
p ‘file’::variable
打印指定变量的值
p *arry-var@length打印arry-var中的前length
p/x var以16进制打印整数变量 var
p/d var把变量 var当作有符号整数打印
p/u var把变量 var当作无符号整数打印
p/o var把变量 var当做8进制数打印
p/t var
x/b address
x/b &variable
以整数二进制的形式打印var变量的值
p/c variable当字符打印
p/f variable以浮点数格式打印变量var
p/a variable打印16进制形式的地址
x/w address
x/4b &variable
打印指定的地址,以四字节一组的方式
call expression类似于print,但不打印void
disassem addr对指定地址进行反汇编

8.7 设置显示选项相关命令

命令描述
set gdb-optionvalue设置GDB的选项
set print arry on
set print arry off
show print arry
以可读形式打印数组。默认是off
set print arry-indexes on
set print arry-indexes off
show print arry-indexes
打印数组元素的下标。默认是off
set print pretty on
set print pretty off
show print pretty
格式化打印C结构体的输出
set print union on
set print union off
show print union
打印C中的联合体。默认是on
set print demangle on
set print demangle off
show print demangle
控制C++中名字的打印。默认是on

8.8 文件操作相关命令

命令描述
info files
info share
列出当前的文件、共享库
file filefile当作调试的程序。如果没有指定参数,则丢弃
core filefile当作core文件。如果没有指定参数,则丢弃
exec filefile当作执行程序。如果没有指定参数,则丢弃
symbol filefile中读取付符号表。如果没有指定参数,则丢弃
load file动态链入file文件,并读取它的符号表
path directory把目录directory加入到搜索可执行文件和符号文件的路径中

8.9 程序执行相关命令

命令描述
run
r
run command-line-arguments
run infile/outfile
从头开始执行程序,也允许进行重定向
continue
c
继续执行直到下一个断点或观察点
continue number继续执行,但会忽略当前的断点number次。
当断点在循环中时非常有用
kill停止程序执行
quit
q
退出GDB调试
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值