0


《Linux从练气到飞升》No.09 Linux调试器-gdb使用

🕺作者: 主页
我的专栏C语言从0到1探秘C++数据结构从0到1探秘Linux菜鸟刷题集
😘欢迎关注:👍点赞🙌收藏✍️留言

🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要,有问题可在评论区提出,感谢阅读!!!

文章目录

前言

当我们在

vscode

IDE

上编写代码出错时,通常会进行调试,有些人会通过打印数据来找

bug

,有些人则会使用调试工具,然而当我们在

Linux

系统中编写代码时却无法这么方便的使用图形化界面调试工具,但还是有调试工具的——

gdb

,今天我们就来讲述

gdb

的使用~

背景

程序的发布方式有两种,

debug

模式和

release

模式

Linux gcc/g++

出来的二进制程序,默认是

release

模式

要使用

gdb

调试,必须在源代码生成二进制程序的时候, 加上

-g

选项

如下:
测试代码:

#include<stdio.h>intadd(int a,int b){return a+b;}intmain(){int i=0;int a=1,b=1;for(i;i<10;++i){printf("hello linux\n");}int c=add(a,b);printf("%d",c);return0;}

配置

makefile

文件

gtest-debug:gtest.c
    gcc -o gtest-debug gtest.c -g

.PHONY:clean

clean:
    rm-f gtest-debug

gdb的使用

调试命令:

gdb gtest-debug
gtest-debug

调试过程中常用的命令:

  • ctrl + dquit :退出
  • list/l行号:显示binFile源代码,接着上次的位置往下列,每次列10行。
  • list/l函数名:列出某个函数的源代码。
  • r或run:运行程序。
  • n 或 next:单条执行。
  • s或step:进入函数调用
  • break(b) 行号:在某一行设置断点
  • break 函数名:在某个函数开头设置断点
  • info break :查看断点信息。
  • finish:执行到当前函数返回,然后挺下来等待命令
  • print ( p ):打印表达式的值,通过表达式可以修改变量的值或者调用函数
  • p 变量:打印变量值。
  • set var:修改变量的值
  • continue(或c):从当前位置开始连续而非单步执行程序
  • run(或r):从开始连续而非单步执行程序
  • delete breakpoints:删除所有断点
  • delete breakpoints n:删除序号为n的断点
  • disable breakpoints:禁用断点
  • enable breakpoints:启用断点
  • info(或i) breakpoints:参看当前设置了哪些断点
  • display 变量名:跟踪查看一个变量,每次停下来都显示它的值
  • undisplay:取消对先前设置的那些变量的跟踪
  • until X行号:跳至X行
  • breaktrace(或bt):查看各级函数调用及参数
  • info(i) locals:查看当前栈帧局部变量的值
  • quit:退出gdb

实际应用

看过上面的命令后,我们通过实际的例子来掌握命令的使用。

示例1

  • gdb gtest-debug:进入调试在这里插入图片描述

示例2

  • list/l 行号:显示gtest源代码,接着上次的位置往下列,每次列10行。
  • 连续回车会执行上次输入的命令在这里插入图片描述

示例3

  • list/l 函数名:列出某个函数的源代码。在这里插入图片描述

示例4

  • r或run:运行程序。在这里插入图片描述

示例5

  • break(b) 行号:在某一行设置断点
  • run(或r):从开始连续而非单步执行程序
  • n 或 next:单条执行。

在这里插入图片描述
在这里插入图片描述

示例6

  • print ( p ):打印表达式的值,通过表达式可以修改变量的值或者调用函数
  • p 变量:打印变量值。
  • continue(或c):从当前位置开始连续而非单步执行程序
  • s或step:进入函数调用在这里插入图片描述在这里插入图片描述在这里插入图片描述

示例7

  • delete breakpoints:删除所有断点
  • delete breakpoints n:删除序号为n的断点
  • info(或i) breakpoints:参看当前设置了哪些断点在这里插入图片描述
  • display 变量名:跟踪查看一个变量,每次停下来都显示它的值
  • undisplay:取消对先前设置的那些变量的跟踪在这里插入图片描述

示例8

  • until X行号:跳至X行在这里插入图片描述

示例9

ctrl + d 或 quit

:退出
在这里插入图片描述

后记

通过上面对于gdb的例子应该可以让你很容易明白gdb的使用,但是实际学习中,调试并不常用,所以只需要记得个大概就行。

标签: linux 服务器 运维

本文转载自: https://blog.csdn.net/m0_67759533/article/details/132029538
版权归原作者 迷茫的启明星 所有, 如有侵权,请联系我们删除。

“《Linux从练气到飞升》No.09 Linux调试器-gdb使用”的评论:

还没有评论