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

GDB调试快速入门

什么是GDB:

        GDB - - - (GNU symbolic debugger)是Linux平台下最常用的一款程序调试器。

自己的Linux是否安装GDB?

        一般来说,使用Ubuntu的话,系统就会自带的有GDB调试器的

命令窗口输入如下命令可以查看是否安装了gdb:

gdb -v

结果:

没有安装的话会出现如下:

[stu@localhost Desktop]$ gdb -v
bash: gdb: command not found

 具体的安装过程,网上有很多的教程,这里不再赘述。

快速上手使用

示例1:正常代码调试分析

#include <stdio.h>int main (){unsigned long long int n, sum;n = 1;sum = 0;while (n <= 100){sum = sum + n;n = n + 1;}return 0;
}

编译:

g++ -o main main10.c -g

-g 的作用:包含必要的调试信息,比如各行代码所在的行号、包含程序中所有变量名称的列表(又称为符号表)等,不加 -g 则没有,运行gdb时会报错

开始调试:

gdb main

 输出如下:

发现会有很多的免责声明,可以通过 -q 选项进行屏蔽

gdb main -q

 这下就清爽多了

GBD常用命令:

示例2:崩溃代码调试分析

#include "stdio.h"int main(){int *b = 0;*b = 10;printf("******** b = %d ************ ",*b);
}
g++ -o main main10.c -g

直接运行会有如下结果:

可以看到箭头3处打印出来的b值为空,因此出现了段错误,进而导致程崩溃。

http://www.lryc.cn/news/38698.html

相关文章:

  • Vim一次复制,多次粘贴
  • 如何修改Win11上的默认程序?
  • 安装Linux虚拟机和Hadoop平台教程汇总及踩坑总结
  • Shell脚本的使用和介绍
  • 机械学习 - 基础概念 - scikit-learn - 数据预处理 - 1
  • OLCNE cluster 配置 NFS Storage(英文)
  • RabbitMQ高级特性
  • 利用Dockerfile开发定制镜像实战.
  • PyInstaller 将DLL文件打包进exe
  • 【JVM篇2】垃圾回收机制
  • LeetCode598. 范围求和 II(python)
  • 观察者模式与发布订阅模式
  • 磨金石教育摄影技能干货分享|烟花三月下扬州,是时候安排了!
  • Kafka 消费组位移
  • Python|数学|贪心|数组|动态规划|单选记录:实现保留3位有效数字(四舍六入五成双规则)|用Python来创造一个提示用户输入数字的乘法表|最小路径和
  • 【MySQL】MySQL的索引
  • 弱监督实例分割 Box-supervised Instance Segmentation with Level Set Evolution 论文笔记
  • Springboot是什么
  • LeetCode 134. 加油站(函数图像法 / 贪心)
  • 王道计算机组成原理课代表 - 考研计算机 第三章 存储系统 究极精华总结笔记
  • Flask-mock接口数据流程
  • springboot项目配置序列化,反序列化器
  • c++11 标准模板(STL)(std::unordered_map)(九)
  • Seay代码审计工具
  • 界面开发(4)--- PyQt5实现打开图像及视频播放功能
  • 核心系统国产平台迁移验证
  • 【数据结构之二叉树】——二叉树的概念及结构,特殊的二叉树和二叉树性质
  • Android学习之帧动画和视图动画
  • vue2和vue3的区别
  • 【你不知道的事】JavaScript 中用一种更先进的方式进行深拷贝:structuredClone