gdb和make工具
gdb工具:
GDB的主要功能
-
断点设置:允许开发者在特定的代码行设置断点,当程序执行到该行时会自动暂停,方便开发者进行调试和分析。
-
变量查看与修改:在程序运行过程中,可以查看和修改变量的值,以便了解程序的运行状态。
-
代码执行控制:可以单步执行代码(包括步入、步过、步出),也可以运行到特定行或函数,从而更细致地观察程序的执行过程。
-
回溯和堆栈查看:提供堆栈回溯功能,可以查看函数调用栈,了解函数调用顺序和当前执行的位置。
-
内存查看:可以查看程序的内存使用情况,包括读取和修改内存内容,有助于发现内存泄漏、越界等问题。
-
进程控制:可以启动、停止、继续、杀死被调试的程序,方便进行各种调试操作。
-
命令脚本:支持编写命令脚本,实现自动化调试过程,提高调试效率。
用法:(Linux)
gcc -g 文件名 -o 执行文件名
gdb 执行文件名------进入调试页面
l(list)-----默认看十行代码
r(run)-----跑程序代码
b(breakpoint)-----设置一个断点,代码运行到断点会停止
c(continue)------继续执行代码,到下一个断点
n(next)------一行一行的执行代码,但是不会进入函数

首先设置一个断点,然后r跑程序,程序运行到断点停止,使用n接着往下一行一行执行代码,由图可以看出,当执行到我的自定义函数show之后再n执行下一行就到了return,并没有进入我的show函数。
s-----一行一行执行代码,但是会进入函数

首先设置一个断点,然后r跑程序,程序运行到断点停止,使用s接着往下一行一行执行代码,由图可以看出, 当我执行到第19行我的自定义函数的时候,在s执行下一行它就会进入到我的自定义函数里面去一行一行执行;这里除了自定义的函数,库函数也会进入。
d 断点序号 ------删除对应序号的断点,如果d后面什么都不加,默认删除所有断点
p 变量名 -------输出变量名的值

在断点之后使用n一行一行执行代码,当执行到循环时,使用p i就可以查看这一次循环i的值为多少,当我们执行代码发生错误或者死循环时就可以使用它来查看循环中哪里出了问题。
q -----退出gdb调试
make工具:
make工具是一个解释器 ,用来解释makefile文件,它会默认在当前路径下执行makefile或者Makefile
作用:节省大量时间,只会根据文件修改的时间戳的改变而编译对应的文件,没有改变的不会再重复编译
时间戳:文件最近一次修改的时间
常用makefile一般形式:
目标文件:依赖文件
(Tab空格)编译规则
目标文件:通过编译规则之后得到的文件
依赖文件:生成目标文件所需要编译的文件,如果没有依赖文件,会继续寻找生成依赖文件的依赖文件,直到找完所有依赖文件或者报错为止
gcc编译的四个步骤:
1、预处理,展开文件的头文件和宏定义
gcc -E 1.c -o 1.i
2、编译,检查语法错误
gcc -S 1.i -o 1.s
3、汇编,生成计算机能够识别的二进制文件
gcc -c 1.s -o 1.o
4、链接、生成最终执行文件
gcc 1.o -o a.out
例:
OBJS=huiwen.o my_rechar.o
cc=gcc
OBJS1=huiwen.c
OBJS2=my_rechar.c
TARGET1=huiwen.o
TARGET2=my_rechar.o${TARGET}:${OBJS}${cc} ${OBJS} -o ${TARGET}
${TARGET1}:${OBJS1}${CC} -c ${OBJS1} -o ${TARGET1}
${TARGET2}:${OBJS2}${cc} -c ${OBJS2} -o ${TARGET2}
clean:rm ${OBJS} ${TARGET}#h:huiwen.o my_rechar.o
# gcc huiwen.o my_rechar.o -o h
#huiwen.o:huiwen.c
# gcc -c huiwen.c -o huiwen.o
#my_rechar.o:my_rechar.c
# gcc -c my_rechar.c -o my_rechar.o
#clean:
# rm huiwen.o my_rechar.o h
解析:这里的huiwen.c、my_rechar.c是功能函数和主函数,还有一个huiwen.h是放头文件的,下面带#号的就是一般写法,通过.o文件生成可执行文件,然后.o文件又是由.c文件生成,最后的clean是删除生成的.o文件,以便于我们更改之后重新make;上面的是通用的写法,用一个通用的变量名来代替可执行文件、目标文件和依赖文件,这样后续我们编译其他文件的时候只需要修改最前面变量的内容即可,就不需要再写一遍编译规则。
相关文章:
gdb和make工具
gdb工具: GDB的主要功能 断点设置:允许开发者在特定的代码行设置断点,当程序执行到该行时会自动暂停,方便开发者进行调试和分析。 变量查看与修改:在程序运行过程中,可以查看和修改变量的值,以…...
【d66】【Java】【力扣】174.寻找二叉搜索树中的目标节点
思路 反着的中序遍历,并计数 代码 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeNo…...
Spring Boot关闭时,如何确保内存里面的mq消息被消费完?
1.背景 之前写一篇文章Spring Boot集成disruptor快速入门demo,有网友留言如下图: 针对网友的留言,那么我们如何解决这个问题呢 Spring-Boot应用停机时,如何保证其内存消息都处理完成? 2.解决方法 方法其实挺简单的&…...
HTML 基础标签——文本内容标签 <ul>、<ol>、<blockquote> 、<code> 等标签的用法详解
文章目录 1. 标题标签2. 段落标签3. 文本格式化标签4. 列表标签4.1 无序列表 `<ul>`4.2 有序列表 `<ol>`5. 引用标签5.1 块引用 `<blockquote>`5.2 行内引用 `<q>`5.3 作品引用 `<cite>`6. 代码和预格式文本标签6.1 代码标签 `<code>`6.2 …...
高效管理社团:Spring Boot在校园社团信息管理中的应用
1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理校园社团信息管理系统的相关信息成为必然。…...
mysql约束和高级sql
约束 MySQL中的约束用于定义表中数据的规则,以确保数据的准确性和可靠性。以下是MySQL中常用的一些约束类型及其概述: PRIMARY KEY(主键):唯一标识表中每条记录的字段或字段组合, 一个表中只能有一个主键…...
蓝桥杯真题——三角回文数(C语言)
问题描述 对于正整数 n, 如果存在正整数 k 使得 n123⋯kk(k1)2n123⋯kk(k1)/2, 则 n 称为三角数。例如, 66066 是一个三角数, 因为 66066123⋯36366066123⋯363 。 如果一个整数从左到右读出所有数位上的数字, 与从右到左读出所有数位 上的数字是一样的, 则称这个数为回文数…...
uni-app 封装图表功能
文章目录 需求分析1. 秋云 uchars2. Echarts 需求 在 uni-app 中使用图表功能,两种推荐的图表工具 分析 在 Dcloud市场 搜索Echarts关键词,会出现几款图表工具,通过大家的下载量,可以看到秋云这个库是比较受欢迎的,其…...
Kubernetes的基本构建块和最小可调度单元pod-0
文章目录 一,什么是pod1.1pod在k8s中使用方法(1)使用方法一(2)使用方法二 1.2pod中容器的进程1.3pod的网络隔离管理(1)pause容器的作用 1.4 Pod分类:(1)自主式…...
QT创建按钮篇
QT创建按钮篇 1.概述 这篇文章从创建一个按钮对QT开发流程熟悉。 2.代码 #include "mywidget.h" #include <QPushButton>myWidget::myWidget(QWidget *parent): QWidget(parent) { // 第一种创建按钮方式 // QPushButton *btn new QPushButton(); /…...
初级软件测试工程师就别出口喊15K了,连自动化测试都不会,还不如应届生
一. 为什么学软件测试 零基础转行,为什么首选软件测试? 软件测试是软件开发的重要过程之一,是软件质量的保证。国外信息技术领域软件开发人员与测试人员的比例是1:1,而国内目前专业软件测试人员很少,属于紧缺型人才&a…...
Mybatis查询数据库,返回List集合,集合元素也是List。
#有时间需求会要求:查询全校的学生数据,且学生数据按班级划分。那么就需要List<List<user>>类型的数据。 SQL语句 SELECT JSON_ARRAYAGG(JSON_OBJECT(name , name ,BJMC, BJMC ,BJBH,BJBH)) as dev_user FROM dev_user WHERE project_id …...
SQL 视图:概念、应用与最佳实践
SQL 视图:概念、应用与最佳实践 SQL(Structured Query Language)视图是数据库管理中的一个重要概念,它允许用户以虚拟表的形式查看数据。视图在数据库中并不实际存储数据,而是提供了一个查询结果的快照,这…...
ubuntu交叉编译expat库给arm平台使用
1.下载expat库源码: https://github.com/libexpat/libexpat/release?page=2 wget https://github.com/libexpat/libexpat/release/download/R_2_3_0/expat-2.3.0.tar.bz2 下载成功: 2.解压expat库,并进入解压后的目录: tar xjf expat-2.3.0.tar.bz2 cd expat-2.3.0 <…...
成都郝蓉宜恺文化传媒有限公司以诚信经营赢得客户长期信赖
成都郝蓉宜恺文化传媒有限公司秉承深厚的企业文化和价值观,其中“以诚信经营为本”是其核心理念之一。以下是对该公司如何以诚信经营为基础,赢得客户长期信赖的几点客观分析: 1.建立信任基石:在商业领域,信任是客户与企…...
LabVIEW for Linux 介绍
LabVIEW for Linux 介绍 1. 兼容性 LabVIEW for Linux 设计用于多种 Linux 发行版,包括 CentOS、Ubuntu 等。在安装之前,务必检查与您特定发行版版本的兼容性。 2. 程序移植 可移植性:在许多情况下,LabVIEW 程序(VI…...
一次32bit有符号数据类型转换为64bit无符号数据类型引发的溢出错误
现象: 在调试一款sensor,通过10帧->8帧->6帧,这样不断的降低帧率调试低照度下的图像效果。ISP配置文件上设置的最大曝光曝光参数为: EXP:15266 Again:15494 Dgain:714 ISPDGain:1360。 当达到最低帧率最低亮度时&#x…...
aosp安卓15新特性dump的wms窗口层级树优化的更加美观
背景: 近来在体验调试aosp15时候,使用了dumpsys activity containers时候,发现wms层级结构树有一个巨大的变化。 很多学员朋友对这个优化改进都给出巨大的点赞,有的学员朋友还想老版本自己实现一下这种树绘制: 对比…...
git的使用、router和route的区别以及v-show和v-if的差别
这里写目录标题 多人协作使用git的步骤(使用gitub)建立自己的空仓库连接远程仓库使伙伴可以使用仓库将代码拉入空仓库进行git指令的学习 router和route的区别router定义:用途: route定义:用途: v-show和v-i…...
Win系统通过命令行查看笔记本电池损耗/寿命/健康
在 Windows 10/11 系统中,可以通过指令查看笔记本电池的寿命情况,方法如下: 0,打开cmd/终端 键盘快捷键:Win R,然后输入cmd,点击【确定】 1,执行命令 在命令行中输入下面指令并按…...
MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...
[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG
TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码:HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...
【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道
文/法律实务观察组 在债务重组领域,专业机构的核心价值不仅在于减轻债务数字,更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明,合法债务优化需同步实现三重平衡: 法律刚性(债…...
针对药品仓库的效期管理问题,如何利用WMS系统“破局”
案例: 某医药分销企业,主要经营各类药品的批发与零售。由于药品的特殊性,效期管理至关重要,但该企业一直面临效期问题的困扰。在未使用WMS系统之前,其药品入库、存储、出库等环节的效期管理主要依赖人工记录与检查。库…...
