Linux编程基础之GDB调试器的使用


前言

操作系统:Fedora
本文为学习笔记,通过使用一些常用的命令,完成一些简单的例子,来大概了解GDB调试器的使用


GDB调试器的使用

(1)打开命令终端,输入 gdb 进入 GDB 调试器(输入 quit 或 按 Ctrl + D 组合键退出GDB程序)
在这里插入图片描述
(2)输入 file yourprogram(需要调试的程序),启动程序准备调试


GDB常用命令详解

以源程序 example.c 为例演示调试基本过程
源程序 example.c 内容如下

#include <stdio.h>
void debug(char *str){
        printf("debug information: %s\n",debug);
}
main(){
        int i,j;
        j=0;
        for(i=0;i<10;i++){
                j+=5;
                printf("now a==%d\n",j);
                debug("xxxxxxxxxxxx");
        }
}

使用 gcc -g -o exam example.c 编译生成可执行文件
在这里插入图片描述
……(不完全显示)
输入 gdb 进入 GDB 调试器,再执行 file exam 命令,加载 exam 程序进行调试
在这里插入图片描述

list 命令

list 命令显示多行源代码,从上次的位置开始显示,默认情况一次显示 10 行,第一次使用时,从代码起始位置显示。
在这里插入图片描述
list n 显示以第 n 行为中心的 10 行代码。例如,list 8,显示了3~12行
在这里插入图片描述
list faunctionname 显示以名为 faunctionname 的函数为中心的10行源代码。
(书上这么说的,不过好像没什么用,和list 没区别……)
在这里插入图片描述
list - 命令显示刚才打印过的源代码之前的源代码
在这里插入图片描述

断点命令 break 和运行命令 r(run的缩写)

break location:在 location 位置设置断点,GDB 会在执行该位置的代码之前停下来。例如:break 10 表示在第 10 行设置断点
在这里插入图片描述
使用 r 命令运行该程序,这时程序在第 10 行前停下来
在这里插入图片描述
continue 或者 c 命令继续运行
在这里插入图片描述
使用 delete breakpoints 断点号 命令删除断点,这里的断点号表示的是第几个断点,例如刚刚
在这里插入图片描述
使用 delete breakpoints 1表示删除第 10 行所定义的断点
clear n 命令表示清除第 n 行的断点,因此此时命令 clear 10 与 delete breakpoints 1 等效
在这里插入图片描述
disable n 表示使得编号为 n 的断点暂时失效,下面程序运行到结束
在这里插入图片描述
……(不完全显示)
在这里插入图片描述
enable n 表示使得编号为 n 的断点有效
在这里插入图片描述
info 命令可以查看断点的相关信息
在这里插入图片描述

display 命令

display 命令可以查看参数的值,其参数可以是变量或表达式。当程序运行到某个断点停下时,显示参数的值。必须在程序运行后,参数中的变量才能显示。
在这里插入图片描述
使用 r 命令运行程序到第 10 行断点时,执行该命令
在这里插入图片描述

step 及 next 命令

在这里插入图片描述

watch 命令

watch 命令可以设置观察点,使用观察点可以使得某表达式的值发生变化时,程序暂停执行。
在这里插入图片描述
给出了变量 j 的变化情况
在这里插入图片描述
给出了变量发生变化的地方
在这里插入图片描述

set varname 命令

可以使用 set varname 命令在程序运行过程中动态改变变量的值,如下,把 j 设置为 500
在这里插入图片描述


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

huazi-J

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

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

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

打赏作者

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

抵扣说明:

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

余额充值