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

这篇具有很好参考价值的文章主要介绍了《Linux从练气到飞升》No.09 Linux调试器-gdb使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🕺作者: 主页

我的专栏
C语言从0到1
探秘C++
数据结构从0到1
探秘Linux
菜鸟刷题集

😘欢迎关注:👍点赞🙌收藏✍️留言

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

前言

当我们在vscodeIDE上编写代码出错时,通常会进行调试,有些人会通过打印数据来找bug,有些人则会使用调试工具,然而当我们在Linux系统中编写代码时却无法这么方便的使用图形化界面调试工具,但还是有调试工具的——gdb,今天我们就来讲述gdb的使用~

背景

程序的发布方式有两种,debug模式和release模式

Linux gcc/g++出来的二进制程序,默认是release模式

要使用gdb调试,必须在源代码生成二进制程序的时候, 加上-g选项

如下:
测试代码:

#include <stdio.h>    
int add(int a,int b)   
{                                   
    return a+b;   
}                     
int main() {          
    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);                            
    return 0;                                  
}           

配置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:进入调试
    《Linux从练气到飞升》No.09 Linux调试器-gdb使用,《探秘Linux》,linux,服务器,运维,gdb,编辑器

示例2

  • list/l 行号:显示gtest源代码,接着上次的位置往下列,每次列10行。
  • 连续回车会执行上次输入的命令《Linux从练气到飞升》No.09 Linux调试器-gdb使用,《探秘Linux》,linux,服务器,运维,gdb,编辑器

示例3

  • list/l 函数名:列出某个函数的源代码。
    《Linux从练气到飞升》No.09 Linux调试器-gdb使用,《探秘Linux》,linux,服务器,运维,gdb,编辑器

示例4

  • r或run:运行程序。
    《Linux从练气到飞升》No.09 Linux调试器-gdb使用,《探秘Linux》,linux,服务器,运维,gdb,编辑器

示例5

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

《Linux从练气到飞升》No.09 Linux调试器-gdb使用,《探秘Linux》,linux,服务器,运维,gdb,编辑器
《Linux从练气到飞升》No.09 Linux调试器-gdb使用,《探秘Linux》,linux,服务器,运维,gdb,编辑器

示例6

  • print ( p ):打印表达式的值,通过表达式可以修改变量的值或者调用函数
  • p 变量:打印变量值。
  • continue(或c):从当前位置开始连续而非单步执行程序
  • s或step:进入函数调用《Linux从练气到飞升》No.09 Linux调试器-gdb使用,《探秘Linux》,linux,服务器,运维,gdb,编辑器
    《Linux从练气到飞升》No.09 Linux调试器-gdb使用,《探秘Linux》,linux,服务器,运维,gdb,编辑器
    《Linux从练气到飞升》No.09 Linux调试器-gdb使用,《探秘Linux》,linux,服务器,运维,gdb,编辑器

示例7

  • delete breakpoints:删除所有断点
  • delete breakpoints n:删除序号为n的断点
  • info(或i) breakpoints:参看当前设置了哪些断点
    《Linux从练气到飞升》No.09 Linux调试器-gdb使用,《探秘Linux》,linux,服务器,运维,gdb,编辑器
  • display 变量名:跟踪查看一个变量,每次停下来都显示它的值
  • undisplay:取消对先前设置的那些变量的跟踪
    《Linux从练气到飞升》No.09 Linux调试器-gdb使用,《探秘Linux》,linux,服务器,运维,gdb,编辑器

示例8

  • until X行号:跳至X行
    《Linux从练气到飞升》No.09 Linux调试器-gdb使用,《探秘Linux》,linux,服务器,运维,gdb,编辑器

示例9

ctrl + d 或 quit :退出
《Linux从练气到飞升》No.09 Linux调试器-gdb使用,《探秘Linux》,linux,服务器,运维,gdb,编辑器

后记

通过上面对于gdb的例子应该可以让你很容易明白gdb的使用,但是实际学习中,调试并不常用,所以只需要记得个大概就行。文章来源地址https://www.toymoban.com/news/detail-638925.html

到了这里,关于《Linux从练气到飞升》No.09 Linux调试器-gdb使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《Linux从练气到飞升》No.13 Linux进程状态

    🕺作者: 主页 我的专栏 C语言从0到1 探秘C++ 数据结构从0到1 探秘Linux 菜鸟刷题集 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇 码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要,有问题可在评论区提出,感谢阅读!!! 前面我们讲述了进程的基本概念以及如何描述、组

    2024年02月12日
    浏览(52)
  • 《Linux从练气到飞升》No.15 Linux 环境变量

    🕺作者: 主页 我的专栏 C语言从0到1 探秘C++ 数据结构从0到1 探秘Linux 菜鸟刷题集 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇 码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要,有问题可在评论区提出,感谢阅读!!!

    2024年02月12日
    浏览(61)
  • 《Linux从练气到飞升》No.20 Linux进程替换

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

    2024年02月10日
    浏览(54)
  • 《Linux从练气到飞升》No.02 Linux权限管理

    🕺作者: 主页 我的专栏 C语言从0到1 探秘C++ 数据结构从0到1 探秘Linux 菜鸟刷题集 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇 码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要,有问题可在评论区提出,感谢阅读!!! 在讲述Linux权限管理之前,我们要了解什么是权限

    2024年02月14日
    浏览(40)
  • 《Linux从练气到飞升》No.12 Linux进程概念

    🕺作者: 主页 我的专栏 C语言从0到1 探秘C++ 数据结构从0到1 探秘Linux 菜鸟刷题集 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇 码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要,有问题可在评论区提出,感谢阅读!!! 本篇我们将正式进入Linux的世界,首先先要讲的就

    2024年02月13日
    浏览(49)
  • 《Linux从练气到飞升》No.22 Linux 基础IO

    🕺作者: 主页 我的专栏 C语言从0到1 探秘C++ 数据结构从0到1 探秘Linux 菜鸟刷题集 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇 码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要,有问题可在评论区提出,感谢阅读!!!

    2024年02月07日
    浏览(45)
  • 《Linux从练气到飞升》No.23 Linux 进程间通信

    🕺作者: 主页 我的专栏 C语言从0到1 探秘C++ 数据结构从0到1 探秘Linux 菜鸟刷题集 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇 码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要,有问题可在评论区提出,感谢阅读!!!

    2024年02月08日
    浏览(39)
  • 《Linux从练气到飞升》No.24 Linux中的信号

    🕺作者: 主页 我的专栏 C语言从0到1 探秘C++ 数据结构从0到1 探秘Linux 菜鸟刷题集 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇 码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要,有问题可在评论区提出,感谢阅读!!!

    2024年02月08日
    浏览(38)
  • 《Linux从练气到飞升》No.16 Linux 进程地址空间

    🕺作者: 主页 我的专栏 C语言从0到1 探秘C++ 数据结构从0到1 探秘Linux 菜鸟刷题集 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇 码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要,有问题可在评论区提出,感谢阅读!!!

    2024年02月12日
    浏览(65)
  • 《Linux从练气到飞升》No.11 初识操作系统

    🕺作者: 主页 我的专栏 C语言从0到1 探秘C++ 数据结构从0到1 探秘Linux 菜鸟刷题集 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇 码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要,有问题可在评论区提出,感谢阅读!!! 什么是操作系统? 任何计算机系统都包含一个基

    2024年02月13日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包