gdb_tutorial

GDB 调试


一、简介

GDB 全称GNU symbolic debugger,是Linux下常用的调试器。

二 、gdb使用流程

程序示例 test.c

#include <stdio.h>
int main(int argc, char** argv) {
    int i = 0;
    int b = 0;
    for (; i < 5; ++i) {
        b++;
    }
    printf("%d\n", b);
    return 0;
}

使用gcc test.c -o test -g编译该程序, -g选项使该编译后的文件是debug,可以进行调试,不然默认情况下gcc编译的文件是release的。

(1)gdb启动

gdb  被调试文件名 #进入调试
quit #退出调试

输入gdb test进入调试,如果退出调试,则输入quit
在这里插入图片描述

(2)调试中查看源代码

list 或者 l 0 # 注:l是小写的L,GDB会记录最近一次命令,所以输入一次后可以直接回车继续显示,执行一次显示10行,显示完所有代码后会有提示

在这里插入图片描述

(3)开始调试

r # 开始调试该代码,如果没有断点,则直接运行结束
b 行号 # 对代码某行打断点
info b # 查看所有断点信息
d 编号 # 删除某个断点,编号是我们在info指令下查看的断点编号
n # 逐过程调试,相当于F10
s # 逐语句调试,相当于F11
p 变量名 # 在调试过程显示变量的变化
display 变量名 # 随着调试的进行常显示该变量
undisplay 编号 # 取消对该编号对应的变量常显示。注意:取消常显示是的指令对象是编号不是变量名。编号就是每一次变量显示值前面的那个数

c #运行到下一个断点处

在这里插入图片描述

(4)线程相关的调试

info threads # 显示当前程序处于哪一个线程中
t 线程id   # 切换到指定线程执行
set scheduler-locking on   # 锁定, 在当前线程下执行,不会被其他线程抢占CPU,直到该线程运行完成。
disassemble       # 解析汇编指令, 显示当前接下来要执行的汇编指令
ni                # 执行汇编下一条汇编指令

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vacant-Position

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值