gdb调式工具的使用

使用前提

gcc生成的可执行程序默认是release版本的,要调式,必须是debug版本,要生成debug版本要加-g 选项

在这里插入图片描述

进入gdb调式工具

gdb +可执行程序
gdb调式工具的使用_第1张图片

退出gdb

在命令行输入“quit”
gdb调式工具的使用_第2张图片

显示行号

第一次输入l或者list:由gdb决定在哪开始显示行号(大概率在main函数附近,显示10行),之后的每次 l 会在上一次的基础上增加显示10行
gdb调式工具的使用_第3张图片


l +行号:从这行开始显示行号
gdb调式工具的使用_第4张图片


l +函数名:从这个函数附近开始显示行号
gdb调式工具的使用_第5张图片

执行程序

执行程序使用 ‘run’ 的命令(可以简写成 r),直接run的没有什么意义(跟直接执行程序没区别,即是 ./mytest ),一般搭配断点使用
gdb调式工具的使用_第6张图片

断点的相关操作

b/break

b +行号:在某一行设置断点
b +函数名:在在某个函数开头设置断点
在这里插入图片描述


之后我们在run,程序就会从这个断点停下来
gdb调式工具的使用_第7张图片


info b

info b:查看断点信息
在这里插入图片描述


step/s

step或者s:逐语句(相当于vs中的F11,会进入函数)
在这里插入图片描述


next /n

n:逐过程(相当于vs中的F10,不会进入函数)
在这里插入图片描述


display

display +变量名:相当于vs中的监视某个变量的值
在这里插入图片描述


display +&变量名:查看地址
在这里插入图片描述


之后的每次n或者s都会显示这些变量的值(即会一直监视下去)
gdb调式工具的使用_第8张图片


undisplay

undisplay +编号:取消监视这个编号的变量(一次可以输入多个编号)
在这里插入图片描述


直接undisplay:取消全部的监视
在这里插入图片描述


p

p +变量名:当我们只需要观察一次变量的值,而不是像监视一样一直有
在这里插入图片描述


finish

当我们s(F11,逐语句)进入某个函数,出不来时,我们可以 “finish”,直接 跑完这个函数
gdb调式工具的使用_第9张图片


continue

continue:当有多个断点时,我们到达了一个断点,想直接到达下一个断点
gdb调式工具的使用_第10张图片


until

until +行号:直接执行到某行(也是适用于逐语句跳不出函数或者跳不出循环的情况)
在这里插入图片描述


finish 与 continue 与 until的对比
在这里插入图片描述


d/delete

d +断点编号:删除某个断点
gdb调式工具的使用_第11张图片


disable

disable +断点编号:不是删除断点,而是禁用断点。
gdb调式工具的使用_第12张图片


enable

enable +断点编号:开启某个被禁用断点
gdb调式工具的使用_第13张图片


bt

bt:查看函数栈帧
gdb调式工具的使用_第14张图片


set var

set var +变量名=i:直接修改变量的值
gdb调式工具的使用_第15张图片

总结

gdb调式工具的使用_第16张图片

你可能感兴趣的:(笔记,编辑器)