gdb命令集合
gcc的
-g
选项的作用是在可执行文件中加入源代码的信,生成的二进制可执行程序可用gdb来进行调试。 gdb的一些命令如下:
启动、退出、查看代码
# 启动
gdb 可执行程序
# 退出
quit
# 给程序设置参数
set args 10 20
# 获取设置参数
show args
# GDB使用帮助
help
# 查看当前文件代码
# 后续的 / 表示,前后等价
list/l (从默认位置显示)
list/l 行号 (从指定的行显示)
list/l 函数名(从指定的函数显示)
# 查看非当前文件代码
list/l 文件名:行号
list/l 文件名:函数名
# 设置显示的行数
show list/listsize
set list/listsize 行数
断点操作
# 设置断点
b/break 行号
b/break 函数名
b/break 文件名:行号
b/break 文件名:函数
# 查看断点
i/info b/break
# 删除断点
d/del/delete 断点编号
# 设置断点无效
dis/disable 断点编号
# 设置断点生效
ena/enable 断点编号
# 设置条件断点(一般用在循环的位置)
b/break 10 if i==5
调试命令
# 运行GDB程序
start(程序停在第一行)
run(遇到断点才停)
# 继续运行,到下一个断点停
c/continue
# 向下执行一行代码(不会进入函数体)
n/next
# 变量操作
p/print 变量名(打印变量值)
ptype 变量名(打印变量类型)
# 向下单步调试(遇到函数进入函数体)
s/step
finish(跳出函数体)
# 自动变量操作
display 变量名(自动打印指定变量的值)
i/info display
undisplay 编号
# 其它操作
set var 变量名=变量值 (循环中用的较多)
until (跳出循环)
多进程调试命令
# 设置调试父进程还是子进程,默认是父进程
set follow-fork-mode parent/child
# 设置调试当前进程的时候,其他进程是否继续进行,默认为on
set detach-on-fork on/off
# 查看当前调试的进程是哪个
info inferior
inferior id
# 使进程脱离GDB调试
detach inferiors id