您现在的位置是:首页 > 正文

GDB——GDB调试工具简介

2024-01-30 20:20:37阅读 2

什么是GDB?

GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。与Window下的IDE不同,GDB是纯命令行执行的,并没有图形界面方法。

问题:既然windows下有对用户友好的图形界面的调试工具了。那么为什么我们还需要回到命令行的模式呢?

如果我们是在UNIX平台下做软件,我们会发现基本不像windows下开发一样,有各种各样的图形界面的编译器和调试工具。在UNIX下,操作基本都是基于命令行完成的,并且图形界面中的调试工具实际上也是集成了GDB的功能。
了解命令行的GDB,我们会发现这个调试工具会比图形界面调试器具有更加强大的功能。也可以更加深入了解调试工具的工作原理。

问题:我们为什么需要调试工具?

  • 软件不是一次性开发完成的(是软件就是bug,是程序就有问题)
  • 调试是软件开发过程中不可或缺的技术(调试工具很重要)

我们写完程序后,需要做完成性测试,单元测试等等。因此调试占软件开发很大一部分工作。

GDB的常规应用

  • 自定义程序的启动方式(指定影响程序运行的参数)
  • 设置条件断点(在条件满足时暂停程序的执行)
  • 回溯检查导致程序异常结束的原因(Core Dump)
  • 动态改变程序执行流(定位问题的辅助方式)

GDB的启动方式

1.直接启动
1. gdb
2. gdb test.out
3. gdb test.out core

注意:在调试程序前,首先在编译时,我们必须要把调试信息加到可执行文件中去。使用编译器的-g参数可以做到这一点。

2.动态链接
1. gdb test.out pid

动态链接的功能就是,将gdb链接到一个正在运行中的进程中去。pid就是进程号。可以使用ps aux命令查看对应程序的进程号。

网站文章

  • 打卡:Java面试系列基础题(3)

    内部类与静态内部类的区别:普通内部类作为外部类一个成员而存在,在普通内部类中可以直接访问外部类属性,调用外部类的方法静态内部类是相对外部类独立存在的,静态内部类中无法直接访问外部类中变量,方法,如果要...

    2024-01-30 20:20:29
  • VS编译fopen函数和fscanf函数报错

    今天用VS2017编译fopen函数和fscanf函数报错,提示不安全,建议更换为fopen_s和fscanf_s函数。error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_

    2024-01-30 20:20:01
  • Can you find it?

    Problem Description Give you three sequences of numbers A, B, C, then we give you a number X. Now you need to calculate if you can find the three numbers Ai, Bj, Ck, which satisfy the formula Ai+Bj

    2024-01-30 20:19:53
  • BusyBox

    BusyBox

    BusyBox 简化嵌入式 Linux 系统为小环境准备的一个小工具包M. Tim Jones (mtj@mtjones.com), 咨询工程师, EmulexTim Jones 是一名嵌入式软件工程师,他是 GNU/Linux Application Programming、AI Application Programming 以及 BSD Sockets Pro...

    2024-01-30 20:19:46
  • Java核心 数据结构 集合 泛型 反射 注解

    Java核心 数据结构 集合 泛型 反射 注解

    本文介绍的是java核心的内容 分别是集合 数据类型(链表 红黑树) 泛型 反射 和 注解

    2024-01-30 20:19:38
  • 线性代数 | (3) 行列式

    线性代数 | (3) 行列式

    目录 1. 行列式的概念 2. n阶行列式 3. 特殊行列式的计算 4. 行列式的性质 5. 行列式的计算 6. 克莱姆法则 7. 范德蒙行列式 8. 行列式与逆序数 9. 行列式展开定理 1. 行列式的概念 求下列方程组的解: 利用高斯消元法求解: 为了记忆,引入如下的符号: 下面是给出解的形式: 二阶行列式: 三阶行列式: 2....

    2024-01-30 20:19:06
  • echarts显示不确定项的图表

    在实际应用之中有时候不确定后端返回的数据需要显示在几个图表中,从数据中解析需要显示几张图表,每一次显示的数目都不一样。

    2024-01-30 20:19:00
  • 【笔记】Attention Is All You Need 论文分析1:流程介绍

    【笔记】Attention Is All You Need 论文分析1:流程介绍

    计算方法和encoder中的一致,但是输入数据有差别,因此Q,K,V的计算也有差别,具体如下输入的数据分为两部分,一部分是从MaskedMulti-HeadAttention经过归一化后的结果,一部分...

    2024-01-30 20:18:44
  • c++KMP算法

    c++KMP算法

    这是本人第一次写博客,整体瑕疵很多很多,写的不是特别清楚,可能只有自己能看懂吧哈哈哈,以后会注意的。原理容易理解,关键就是求pmt数组,自己太菜了弄了一个晚上才理解。

    2024-01-30 20:18:14
  • GESP2023年6月 c++二级考试答案详解

    GESP2023年6月 c++二级考试答案详解

    第 10 题 如果a为char类型的变量,且a的值为’C’(已知’C’的ASCII码为67),则执行cout 2);如果用两个int类型的变量a和b分别表达平行四边形的两条边长,用int类型的变量h表...

    2024-01-30 20:18:07