当前位置: 首页 > news >正文

Linux的调试工具 - gdb(超详细)

Linux的调试工具 - gdb

  • 1. 背景
  • 2. 开始使用
    • 指令的使用都用下面这个C语言简单小代码来进行演示:
    • 1. list或l 行号:显示文件源代码,接着上次的位置往下列,每次列10行。
    • 2. list或l 函数名:列出某个函数的源代码。
    • 3. r或run: 运行程序。
    • 4. break或b 行号:在某一行设置断点
    • 5. n或next:单条执行(类似vs中的F10)
    • 6. s或step:进入函数调用(类似vs中的F11)
    • 7. break 函数名:在某个函数开头设置断点
    • 8. info break或info b:查看断点信息。
    • 9. finish:执行到当前函数返回,然后挺下来等待命令
    • 10. p 变量:打印变量值。
    • 11. continue或c:从当前位置开始连续而非单步执行程序
    • 12. run或r:从开始连续而非单步执行程序
    • 13. delete breakpoints:删除所有断点
    • 14. delete breakpoints n:删除序号为n的断点
    • 15. disable breakpoints:禁用断点
    • 16. enable breakpoints:启用断点
    • 17. display 变量名:跟踪查看一个变量,每次停下来都显示它的值
    • 18. undisplay:取消对先前设置的那些变量的跟踪
    • 19. until X(行号):跳至X行
    • 20. breaktrace或bt:查看各级函数调用及参数
    • 21. q或quit:退出gdb

1. 背景

  • 程序的发布方式有两种,debug模式和release模式
  • Linux gcc/g++出来的二进制程序,默认是release模式
  • 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项,发布成debug模式
    在这里插入图片描述

2. 开始使用

指令的使用都用下面这个C语言简单小代码来进行演示:

  1 #include <stdio.h>
  2 
  3 int SumAdd(int x)
  4 {
  5     int i=1;
  6     int sum=0;
  7     for(i=1;i<=x;i++)
  8     {
  9         sum+=i;
 10     }
 11     return sum;
 12 }
 13 
 14 int main()
 15 {
 16     printf("%d \n",SumAdd(100));
 17     return 0;
 18 }            

1. list或l 行号:显示文件源代码,接着上次的位置往下列,每次列10行。

例:l 0

在这里插入图片描述


2. list或l 函数名:列出某个函数的源代码。

例:l SumAdd

在这里插入图片描述


3. r或run: 运行程序。

注: 如果没有断点,程序将运行到底

例:r

在这里插入图片描述


4. break或b 行号:在某一行设置断点

例:b 3

在这里插入图片描述


5. n或next:单条执行(类似vs中的F10)

注: 单条执行需要在调试启动的情况下进行,需要先打断点,然后r执行到断点位置

例:n

在这里插入图片描述


6. s或step:进入函数调用(类似vs中的F11)

例:s

在这里插入图片描述


7. break 函数名:在某个函数开头设置断点

例:break SumAdd

在这里插入图片描述


8. info break或info b:查看断点信息。

例:info b

在这里插入图片描述


9. finish:执行到当前函数返回,然后挺下来等待命令

例:finish

在这里插入图片描述


10. p 变量:打印变量值。

例:p sum

在这里插入图片描述


11. continue或c:从当前位置开始连续而非单步执行程序

例:c

在这里插入图片描述


12. run或r:从开始连续而非单步执行程序

r

在这里插入图片描述

13. delete breakpoints:删除所有断点

例;delete breakpoints

在这里插入图片描述


14. delete breakpoints n:删除序号为n的断点

delete breakpoints 5

在这里插入图片描述


15. disable breakpoints:禁用断点

例:disable breakpoints

在这里插入图片描述


16. enable breakpoints:启用断点

例:enable breakpoints

在这里插入图片描述


17. display 变量名:跟踪查看一个变量,每次停下来都显示它的值

例:display sum

在这里插入图片描述


18. undisplay:取消对先前设置的那些变量的跟踪

例:undisplay

在这里插入图片描述


19. until X(行号):跳至X行

例:until 11

在这里插入图片描述


20. breaktrace或bt:查看各级函数调用及参数

例:bt

在这里插入图片描述


21. q或quit:退出gdb

例:q

在这里插入图片描述

(本章完)

相关文章:

  • 〖Python网络爬虫实战㉟〗- 极验验证码的识别
  • 【VsCode】SSH远程连接Linux服务器开发,搭配cpolar内网穿透实现公网访问(1)
  • LeNet-5
  • vue3父子组件传对象,子组件访问修改父组件对象中的属性值
  • 第13节-PhotoShop基础课程-裁剪工具
  • MySQL 面试题——MySQL 基础
  • VBA技术资料MF57:VBA_自动创建PowerPoint演示文稿
  • 无涯教程-JavaScript - OFFSET函数
  • Hadoop-Hbase
  • [npm] npx 介绍与使用说明
  • 什么是同步容器和并发容器的实现?
  • 与导师沟通2023-09-14
  • 数据库表的基本操作
  • nowcoder NC30 缺失的第一个正整数
  • 学习python和anaconda的经验
  • c语言输出杨辉三角
  • 安卓恶意应用识别(三)(批量反编译与属性值提取)
  • C【数组】
  • 中国IT分销行业市场研究与投资战略报告(2023版)
  • Android 原生内置应用配置
  • 乌克兰关切有中国人在俄军中服务,外交部:坚决反对无端指责
  • 金光耀:被激活的复旦记忆
  • 中国泳协:新奥运周期竞争激烈,“三从一新”全力提升实力
  • 谁为金子疯狂:有人贷款十万博两千,有人不敢再贸然囤货
  • 光影连接世界,中国企业出海绘就城市新名片
  • 旁白丨还在寻亲路上的家长们,期待“上岸”