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

【linux基础】linux中的开发工具(4)--调试器gdb的使用

目录

  • 前言
  • 一,背景
  • 二,gdb的使用
    • 1. 启动 gdb 调试器:
    • 2. 罗列代码信息
    • 3. 运行程序
    • 4. 有关断点的操作
      • (1) 打断点
      • (2) 查看断点
      • (3) 删除断点
      • (4) 在一次调试中,断点是递增的
      • (5) 关闭断点
      • (6) 开启断点
      • (7) 逐过程调试,相当于 F10
      • (8) 逐语句调试,相当于 F11
      • (9) 查看变量或地址,相当于监视窗口
      • (10) 在调试中,常显示变量的值或地址
      • (11) 取消常显示
      • (12) 运行到下一个断点处
      • (13) 直接运行结束所在函数,就停下
      • (14) 跳转至指定行,运行中间代码
      • (15) 退出 gdb

前言

通过前面的学习我们已经会通过vim,gcc/g++和makefile构建出完整的代码程序了,但是光写出代码还不够,代码运行出错了该怎么调试呢?本篇文章就会介绍linux中的调试器–gdb的使用。

一,背景

(1) 程序的发布方式有两种,debug模式和release模式。
(2) Linux 中 gcc/g++出来的二进制程序,默认是release模式。
(3) 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项

在这里插入图片描述

下面来查看增加的一些调试信息:

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

二,gdb的使用

1. 启动 gdb 调试器:

使用:gdb 调试文件

在这里插入图片描述

2. 罗列代码信息

方式1:

使用:l 文件名: 数字 或者 l 文件名: 函数名

在这里插入图片描述

方式2:

使用:l 文件名: 0,再一直按回车

在这里插入图片描述

方式3:

使用:l 数字 .查找指定行

在这里插入图片描述

3. 运行程序

使用: r

在这里插入图片描述

4. 有关断点的操作

这里先罗列出调试文件代码,下面将根据这份代码进行有关断点的操作。
在这里插入图片描述

(1) 打断点

在这里插入图片描述

(2) 查看断点

在这里插入图片描述

(3) 删除断点

在这里插入图片描述

(4) 在一次调试中,断点是递增的

在这里插入图片描述

(5) 关闭断点

在这里插入图片描述

(6) 开启断点

在这里插入图片描述

(7) 逐过程调试,相当于 F10

在这里插入图片描述

(8) 逐语句调试,相当于 F11

在这里插入图片描述

(9) 查看变量或地址,相当于监视窗口

在这里插入图片描述

(10) 在调试中,常显示变量的值或地址

在这里插入图片描述

(11) 取消常显示

在这里插入图片描述

(12) 运行到下一个断点处

在这里插入图片描述

(13) 直接运行结束所在函数,就停下

在这里插入图片描述

(14) 跳转至指定行,运行中间代码

在这里插入图片描述

(15) 退出 gdb

直接输入 quit 即可。


http://www.kler.cn/a/306497.html

相关文章:

  • Thread类及常见方法
  • C++《继承》
  • 深度学习之卷积问题
  • ubuntu中apt-get的默认安装路径。安装、卸载以及查看的方法总结
  • 界面控件Kendo UI for Angular中文教程:如何构建带图表的仪表板?(一)
  • GIS空间分析案例---城市公共设施配置与服务评价
  • 问题及解决方案汇总
  • 结构体内存对齐
  • 【算法】动态规划—最长公共子序列
  • HTML+CSS - 网页布局之多列布局定位
  • 网络安全应急响应概述
  • 用STM32做一个USB-TTL工具吧
  • JavaScript Promise 异步编程的一些代码分享
  • 远程桌面内网穿透是什么?有什么作用?
  • openssl下载和创建证书
  • 如何在 Visual Studio Code 中反编译具有正确行号的 Java 类?
  • C++:opencv多边形逼近二值图轮廓--cv::approxPolyDP
  • Java集合进阶--双列集合
  • R与机器学习系列|15.可解释的机器学习算法(Interpretable Machine Learning)(下)
  • HarmonyOS开发5.0【rcp网络请求】
  • ChatGPT+2:修订初始AI安全性和超级智能假设
  • L298N电机驱动方案简介
  • JAVA:Nginx(轻量级的Web服务器、反向代理服务器)--(1)
  • JAVA学习-练习试用Java实现“串联所有单词的子串”
  • 物联网——USART协议
  • 揭开OpenAI草莓模型神秘面纱——重塑大语言模型的逻辑能力