Linux:git和gdb/cgdb
一:在XShell上使用git
步骤1:安装git命令行
sudo yum install git
步骤2:注册git账户和仓库,并点击克隆/下载,把HTTPS复制
步骤3: 在显示屏上输入下面命令,然后按提示输入自己的用户名和邮箱
git clone https://gitee.com/ctdhjnds/linux-code.git
所以我们就成功的在Linux克隆了自己的仓库,使用ll命令就可以查看我们的仓库
步骤4:输入下面命令
git add lesson4
add会将lesson4这个目录上传到当前git的工作区的暂存区,这是因为如果我们想要将多个文件多次推送到git的时候我们只需要多次add这些文件到暂存区,然后一次就可以推送到git了。
步骤5: 输入下面命令
git commit -m "新增文件"
commit会将暂存区中的文件目录推送到git仓库中,在演示中即将lesson4这个目录推送到仓库;其中“新增文件”表示的是提交日志信息 ,写是为了我们之后更好的了解我们提交的是什么
步骤6:输入下面命令
git push
然后按提示输入用户名和密码
git status:查看状态
git log:查看用户的所有提交信息
git提交的时候,只会提交变化的部分
二:gdb调式
Linux的工作模式有两种,一种是Debug模式,另一种是Release模式。在Linux下我们编译好的代码无法直接调式,这是因为gcc/g++默认的工作模式是Release模式。如果我们在gcc/g++命令后面加上-g选项,就可以让最后形成的可执行文件添加调试信息,使文件处于Debug模式。因此,程序要调试,必须是Debug模式,也就是说文件编译时必须加上-g选项。
2.1 使用gdb/cgdb调试代码
gbd/cgdb + 文件名进入gdb,quit退出,特别注意的是由于cgdb的使用比gdb好用,并且cgdb的,命令和gdb一样,所以我们gdb只做简单演示,而使用cgdb需要安装cgdb,命令如下:
sudo yum install -y cgdb
首先我们创建了一个mycode.c文件并使用gcc mycode.c -o mycode -std=c99命令生成目标文件mycode,接着我们gdb mycode命令就可以进入gdb了,但是我们输入l列出代码内容的时候发现居然报错了,这是因为我们的mycode文件处于Release模式,当我们将gcc mycode.c -o mycode -std=c99加上-g选项时(gcc mycode.c -o mycode -std=c99 -g),再输入l就可以列出代码内容了
mycode.c代码:
#include <stdio.h>
int Sum(int s, int e)
{int result = 0;for(int i = s; i <= e; i++){result += i;}return result;
}int main()
{int start = 1;int end = 100;printf("I will begin\n");int n = Sum(start, end);printf("running done, result is: [%d-%d]=%d\n", start, end, n);return 0;
}
2.2 gdb/cgdb的命令
1. l(list):列出内容
l + 数字:列出行号附近的代码
如上图所示: l 1的意思是列出第一行附近的代码,由于l一次只能列出10行的内容,所以我想要看完整的代码可以按Enter键直至所有代码都展示出来
2. b(break):打断点
b + 数字:在数字行打断点
b + 文件名:数字:在文件名第数字行打断点
b + 文件名:函数名:在文件名函数入口打断点
当我们打完断点后我们可以看到文件对应行行号就会变红
3.info b:查看断点信息
第一列表示的是断点的编号
4. d :删除断点
d + 断点编号:删除编号的断点
如上图所示,分别有1,2,3三个断点编号的断点,当我们想要删除18行的断点时(即编号为2的断点) ,我们就可以直接使用命令的 d 2,然后我们在info查看断点信息,果然18行的断点就被删除了
注意:删除断点不能d + 行号,当cgdb没有退出的时候,断点的编号会依次递增
5. n(next) :
相当于VS的F10(逐过程),如果存在函数,不会进入函数而直接得到函数返回值
如上面两张图所示,原本程序停在了18行,当我们执行n命令时,程序就不会进入函数内部
6. s(step):
相当于VS的F11(逐语句),如果存在函数就会进入函数内部执行,并且cgdb会记录最新一条命令的内容,所以我们可以直接按Enter键执行最新一条命令
如上两张图所示,原本程序停止在18行,执行s命令后程序进入函数内部
7.r(run) :执行代码
当代码中有断点的时候,使用r就会将程序停止在断点处,否则就会直接跑完整个程序
如上图所示,在18行处有一个断点,执行r命令程序就停在了第一个断点处
8.p(printf):打印变量的值
p + 变量名:打印变量的值
由上图可知,p + 变量名只能看一次查一次
9.info locals:查看当前函数所有临时变量的值
如上图所示:当前程序正在执行Sum函数,执行info locals命令时,就将Sum函数内部的临时变量i和result的值打印出来了
10.finish:快速跳出当前函数并返回执行结果
如上两张图所示,程序原本在Sum函数内部,执行finish命令后,程序就执行完当前函数并返回执行结果
11.until:执行到指定行号
如上面两张图所示:此时程序执行到第6行,当我们想程序不要继续执行Sum函数直接跳转到第10行开始执行时,我们可以使用until 10命令,程序就自动执行完后序的Sum函数直接跳转到第10行
12.display:观察打印变量的值(长显示)
如上图所示,执行display i命令就会打印i的值,display result就会打印result的值,并且我们可以看到i和result的值一直显示在显示器上,并且每个变量名之前都有一个编号
13.undisplay:取消打印观察变量的值
当我们不想使用display观察打印变量的值时,使用undisplay + 对应变量的编号就可以了,如下图所示,当我们不想观察result的值的时候,由于result的编号为2,执行undisplay 2命令就取消对result的值的观察打印了
三:三个调式技巧
3.1 watch
watch + 变量相当于也是一个断点,当变量的值发生改变时,系统就会自动提示我们并打印出新旧变量的值,如上图所示,第一次执行s命令时watch没有任何提示,第一次执行s时由于result的值发生改变所以系统将result的新旧值打印出来。这个调试技巧非常好用,就比如在一个程序中,可以使用watch监视常变量,当由于常变量的非法修改导致程序错误时watch就会提示
3.2 set var:在调试过程中改变程序里变量的值
由上图可知,此时i的值为4 ,当我们在程序执行过程中如果我们想要改变变量i的值为5的时候我们就可以使用set var i = 5,因此变量i的值就变成5了。这个调试技巧可以应用于当一个程序中我们不确定是否是某个变量的值的错误导致结果的错误想要改变这个变量的值是否程序无误就可以使用set var
3.3 条件断点
设置条件断点:b + 行号 + if 变量 == 值
如上图所示:执行b 8 if i == 3我们给第8行设置了一个条件断点,当变量i 的值为3的时候断点才触发,我们执行info b查看断点可以看到这个条件断点添加了stop only if i == 3这条语句表明只有当i的值为3 的时候才会触发断点程序停止,如下图所示
condition 断点编号 变量 == 值:给已存在的断点新增触发条件
相关文章:
Linux:git和gdb/cgdb
一:在XShell上使用git 步骤1:安装git命令行 sudo yum install git 步骤2:注册git账户和仓库,并点击克隆/下载,把HTTPS复制 步骤3: 在显示屏上输入下面命令,然后按提示输入自己的用户名和邮箱…...
深度对比评测:n8n vs Coze(扣子) vs Dify - 自动化工作流工具全解析
引言 在当今数字化转型的浪潮中,自动化工作流工具已成为企业和个人提升效率的关键利器。n8n、Coze(扣子)和Dify作为三款各具特色的自动化工具,在开发者社区和商业用户中都引起了广泛关注。本文将为您带来这三款工具的深度对比评测…...
如何用国产CAD软件皇冠CAD(CrownCAD)三维建模“橡胶座椅”?
皇冠CAD(CrownCAD)以『橡胶座椅』为例讲解“曲面设计、填充曲面、投影曲线、扫描曲面、放样曲面”等三维CAD操作技巧。 在现有模型边线、草图或曲面所定义的边框内填充一曲面。 点击进入填充曲面命令,其界面如下图所示: 各界面参…...
Whisper微调及制作方言数据集
本文不生产技术,只做技术的搬运工!!! 前言 最近在进行whisper微调实验,这个网上有很多成功案例,作者随机找了一个进行了复现,但是由于微调目的是适配本地方言,数据集的采集成为了一…...
实现营销投放全流程自动化 超级汇川推出信息流智能投放产品“AI智投“
随着消费者行为模式的多样化和媒体渠道的日益分散,数字营销行业面临挑战。传统人工数据分析效率低、误差率高,大幅制约广告预算效能。针对上述痛点,近期阿里巴巴旗下超级汇川广告平台推出“AI智投”信息流智能投放产品,基于AI大模…...
shell脚本2
条件测试分类 测试特定的表达式是否成立,当条件成立时,测试语句的返回值为0,否则为其他数值 测试命令格式:[ 条件表达式 ] 文件测试 格式:[ 操作符 文件或目录 ] -d:测试是否为目录(Di…...
2025年3月电子学会青少年机器人技术(五级)等级考试试卷-理论综合
青少年机器人技术等级考试理论综合试卷(五级) 分数:100 题数:30 一、单选题(共20题,共80分) 1. 2025年初,中国科技初创公司深度求索在大模型领域迅速崛起,其开源的大模型成为全球AI领域的焦…...
E3650工具链生态再增强,IAR全面支持芯驰科技新一代旗舰智控MCU
近日,全球嵌入式软件开发解决方案领导者IAR与全场景智能车芯引领者芯驰科技正式宣布,IAR Embedded Workbench for Arm已全面支持芯驰E3650,为这一旗舰智控MCU提供开发和调试一站式服务,进一步丰富芯驰E3系列智控芯片工具链生态&am…...
Linux之安装配置Nginx
Linux系统下安装配置Nginx的详细步骤如下: 一、准备工作 系统环境:确保Linux系统已安装,并且具有网络连接(以便在线安装依赖或下载Nginx)。 安装依赖:Nginx依赖于一些开发库和工具,如gcc、pcr…...
PC接入deepseek
<template> <div class"btn"> <el-button type"primary" plain click"openAIDrawer">AI问答</el-button> </div> <!-- deepSeek --> <el-drawer v-model"deepSeekData.drawerShow" :title&quo…...
Atlas 800I A2 离线部署 DeepSeek-R1-Distill-Llama-70B
一、环境信息 1.1、硬件信息 Atlas 800I A2 1.2、环境信息 注意:这里驱动固件最好用商业版,我这里用的社区版有点小问题 操作系统:openEuler 22.03 LTS NPU驱动:Ascend-hdk-910b-npu-driver_24.1.rc3_linux-aarch64.run NPU固…...
CF每日4题
1500左右的做到还是有点吃力 2093E 1500 二分答案 题意:给定一个长度为 n 的数组,现在要把它切成 k 份,求每一份最小的MEX中的最大值。 就是找最大值,但是这个值是所有段最小的值采用二分答案,二分这个值࿰…...
vue3 实现将html内容导出为图片、pdf和word
话不多说直接开始 本文使用到的开源插件库地址 wang1xiang 1.1 下载依赖 npm install html2canvas jspdf html-docx-js-typescript file-saver --save 2.1 下载工具 npm install html2image-pdf-word --save 3.1 页面使用 <template><div><div click"…...
手机端本地服务与后端微服务的技术差异
以下是手机内部本地服务与后端微服务架构及通信协议的对比分析,结合两者的核心设计差异与技术实现特点展开: 一、架构设计对比 维度手机端本地服务后端微服务核心目标资源效率、离线优先、动态更新高并发处理、分布式事务、服务治理服务拆分粒度按功能…...
音视频之H.265/HEVC环路后处理
H.265/HEVC系列文章: 1、音视频之H.265/HEVC编码框架及编码视频格式 2、音视频之H.265码流分析及解析 3、音视频之H.265/HEVC预测编码 4、音视频之H.265/HEVC变换编码 5、音视频之H.265/HEVC量化 6、音视频之H.265/HEVC环路后处理 类似于以往的视频编码标准,H…...
RSUniVLM论文精读
一些收获: 1. 发现这篇文章的table1中,有CDChat ChangeChat Change-Agent等模型,也许用得上。等会看看有没有源代码。 摘要:RSVLMs在遥感图像理解任务中取得了很大的进展。尽管在多模态推理和多轮对话中表现良好,现有模…...
redis特性及应用场景
文章目录 什么是redis?热库redis作为热库的特性redis适用场景 什么是redis? redis在系统架构中的位置就是冷热分离架构的热数据库位置, redis就是热库, 我们一般说缓存数据库。 其他的像MySQL、SQL Server这种关系数据库、MongoDB…...
Java中正则表达式使用方法
1. 正则表达式概述 正则表达式(Regular Expression,简称 Regex)是一种用于匹配字符串的模式工具。在 Java 中,正则表达式通过 java.util.regex 包实现,主要涉及以下两个类: Pattern:表示一个编…...
CSS基础
1. CSS入门 1.1. CSS是什么 CSS是Cascading Style Sheets的缩写,翻译为层叠样式表。CSS是一种样式表语言,用来描述HTML文档的表现方式,如字体、色彩、背景色等等。我们先从一段简单的CSS代码开始。 代码1 CSS示例 p {color: red; }这段代…...
【Linux系统篇】:什么是信号以及信号是如何产生的---从基础到应用的全面解析
✨感谢您阅读本篇文章,文章内容是个人学习笔记的整理,如果哪里有误的话还请您指正噢✨ ✨ 个人主页:余辉zmh–CSDN博客 ✨ 文章所属专栏:Linux篇–CSDN博客 文章目录 一.信号概念1.生活角度的信号2.技术应用角度的信号3.补充内容前…...
SpringSecurity源码解读AbstractAuthenticationProcessingFilter
一、介绍 AbstractAuthenticationProcessingFilter 是 Spring Security 框架里的一个抽象过滤器,它在处理基于表单的认证等认证流程时起着关键作用。它继承自 GenericFilterBean,并实现了 javax.servlet.Filter 接口。此过滤器的主要功能是拦截客户端发送的认证请求,对请求…...
Python torchvision.transforms 下常用图像处理方法
torchvision.transforms 是 PyTorch 用于处理图像数据的一个模块,提供了丰富的图像变换功能。 1. transforms.Compose 的使用方法 transforms.Compose 用于将多个 transforms 操作组合起来,形成一个变换序列,然后按顺序对图像进行处理。其输…...
Zynq7020 制作boot.bin及烧录到开发板全流程解析
Zynq7020作为Xilinx推出的经典SoC芯片,其PS(Processing System)与PL(Programmable Logic)协同工作的特性使其在嵌入式开发中广泛应用。然而,初次接触Zynq的开发者在制作启动文件boot.bin及烧录时࿰…...
【办公类-89-02】20250424会议记录模版WORD自动添加空格补全下划线
背景需求 4月23日听了一个MJB的征文培训,需要写会议记录 把资料黏贴到模版后,发现每行需要有画满下划线 原来做这套资料,就是手动按空格到一行末,有空格才会出现下划线,也就是要按很多的空格(凑满一行&…...
Python-36:饭馆菜品选择问题
问题描述 小C来到了一家饭馆,这里共有 nn 道菜,第 ii 道菜的价格为 a_i。其中一些菜中含有蘑菇,s_i 代表第 ii 道菜是否含有蘑菇。如果 s_i 1,那么第 ii 道菜含有蘑菇,否则没有。 小C希望点 kk 道菜,且希…...
某大型电解铝厂电解系统谐波治理装置改造沃伦森电气
电解铝行业谐波治理解决方案——无源滤波装置优化升级,保障稳定运行 在电解铝生产过程中,谐波污染问题严重影响电网电能质量,甚至可能导致滤波装置损坏,引发群爆事故。河南登封某大型电解铝厂通过无源滤波装置智能化改造ÿ…...
基于YOLO+DeepSeek的农作物病虫害检测系统
前言 本系统是一个基于YOLODeepSeek的农作物病虫害检测系统。 可使用YOLOV1-YOLOV12的任意模型进行目标检测。可以实现检测图片、批量检测图片、视频检测、摄像头检测四种方式。 能够检测出[“苹果-黑腐病”, “苹果-健康”, “苹果-结痂”, “甜椒-细菌性斑疹”, “甜椒-健康…...
Python实现技能记录系统
Python实现技能记录系统 来自网络,有改进。 技能记录系统界面如下: 具有保存图片和显示功能——允许用户选择图片保存,选择历史记录时若有图片可预览图片。 这个程序的数据保存在数据库skills2.db中,此数据库由用Python 自带的…...
【专题刷题】二分查找(一):深度解刨二分思想和二分模板
📝前言说明: 本专栏主要记录本人的基础算法学习以及LeetCode刷题记录,按专题划分每题主要记录:(1)本人解法 本人屎山代码;(2)优质解法 优质代码;ÿ…...
基于Python+Flask的MCP SDK响应式文档展示系统设计与实现
以下是使用Python Flask HTML实现的MCP文档展示系统: # app.py from flask import Flask, render_templateapp Flask(__name__)app.route(/) def index():return render_template(index.html)app.route(/installation) def installation():return render_templa…...
Flask + ajax上传文件(一)
一、概述 本教程将教你如何使用Flask后端和AJAX前端实现文件上传功能,包含完整的代码实现和详细解释。 二、环境准备 1. 所需工具和库 Python 3.xFlask框架jQuery库Bootstrap(可选,用于美化界面)2. 安装Flask pip install flask三、项目结构 upload_project/ ├── a…...
【每天一个知识点】熵(Entropy)
“熵(Entropy)”是信息论、热力学、机器学习等多个领域的核心概念。它可以用一句话概括为: 🔑 熵表示系统的不确定性或信息混乱程度。 📚 一、信息论中的熵(Information Entropy) 在 Claude Sh…...
GIT 使用小记
全局设置 PS C:\workspace> git config --global user.name "FreeMan" PS C:\workspace> git config --global user.email "12323772wawhyuser.noreply.gitee.com" PS C:\workspace> git remote add origin https://gitee.com/wawhy/mountain.git…...
如何保证高防服务器中的系统安全?
对于高防服务器中的系统安全,企业通常会采取一系列的防护措施和策略防止网络攻击、入侵、恶意软件和其他网络安全威胁,下面是几个较为主要的安全防护措施,能够帮助企业提升高防服务器的安全性。 定期更新服务器中操作系统以及所有安装的软件&…...
【go语言】window环境从源码编译go
背景 早就听过go语言已经实现自举, 也就是使用旧版本go,来编译新版源码,得到新版本go。 步骤 1. 下载源码 git clone https://github.com/golang/go.git 2. 开始make cd go\src make.bat 3. 等待编译 卡住就按下回车 验证新版本 ……...
医学图像(DICOM数据)读取及显示(横断面、冠状面、矢状面、3D显示)为什么用ITK+VTK,单独用ITK或者VTK能实一样功能吗?
在医学图像处理中,结合使用 ITK 和 VTK 是常见的做法,因为它们各自专注于不同的核心功能。以下是逐步解释为何代码中同时使用两者,以及单独使用是否可行的分析: 1. 为什么用ITK处理DICOM数据? 1.1 ITK的DICOM处理优势…...
TiDB 深度解析与 K8S 实战指南
一、TiDB 核心特性与架构原理 1. 核心特性 分布式架构: 采用计算(TiDB Server)、存储(TiKV)、调度(PD)分离设计,支持水平扩展至 PB 级数据量。通过 PD 动态调度 Region(…...
WPS右键菜单中“上传到云文档”消失,使用命令行注册解决
关于上传到wps云文档,右键菜单莫名消失的问题 尝试在WPS设置显示上传到wps云文档的右键菜单,以及使用设置和修复工具修复,均无法显示菜单。 最终解决方法: regsvr32 "D:\Program Files (x86)\WPS Office\12.1.0.20784\offic…...
计算机求职面经内容与技巧分享
计算机求职面经内容与技巧分享 一、求职前的充分准备 (一)简历优化 突出技术能力:在简历中,务必清晰呈现自己精通的编程语言,例如熟练掌握 Java、Python 等语言的核心语法、常用库及框架。详细列举熟悉的技术栈&#x…...
java Springboot使用扣子Coze实现实时音频对话智能客服
一、背景 因公司业务需求,需要使用智能客服实时接听顾客电话。 现在已经完成的操作是,智能体已接入系统进行对练,所以本文章不写对联相关的功能。只有coze对接~ 扣子提供了试用Realtime WebSocket,点击右上角setting配…...
焦化烧结行业无功补偿解决方案—精准分组补偿 稳定电能质量沃伦森
在焦化、烧结等冶金行业,负荷运行呈现长时阶梯状变化,功率波动相对平缓,但对无功补偿的分组精度要求较高。传统固定电容器组补偿方式无法动态跟随负荷变化,导致功率因数不稳定,甚至可能因谐波放大影响电网安全。 行业…...
机器人项目管理新风口:如何高效推动智能机器人研发?
在2025年政府工作报告中,“智能机器人”首次被正式纳入国家发展战略关键词。从蛇年春晚的秧歌舞机器人惊艳亮相,到全球首个人形机器人马拉松的热议,智能机器人不仅成为科技前沿的焦点,也为产业升级注入了新动能。而在热潮背后&…...
ZooKeeper配置优化秘籍:核心参数说明与性能优化
#作者:张桐瑞 文章目录 tickTime:Client-Server通信心跳时间initLimit:Leader-Follower初始通信时限syncLimit:Leader-Follower同步通信时限dataDir:数据文件目录clientPort:客户端连接端口服务器名称与地…...
uniapp -- 实现微信小程序、app、H5端视频上传
布局及实现代码: <template><view class"flex flex-column p-4 grid-gap-4"><view class"flex flex-column grid-gap-4 bg-white p-4 rounded-4"><view class"font-weight-600">视频名称</view><i…...
2025年Redis分片存储性能优化指南
一、分片规则与负载均衡 动态哈希分片 采用CRC16算法计算键哈希值,通过hash_slot CRC16(key) % 16384确定槽位分布,结合Redis Cluster自动管理槽位迁移。 总分片数按需动态调整,例如从16节点扩容至32节点时,触发槽位重分配以…...
前端跨端框架的开发以及IOS和安卓的开发流程和打包上架的详细流程
以下是关于 前端跨端框架开发 以及 iOS/Android 原生开发流程与上架 的详细指南,涵盖技术选型、开发工具、打包发布全流程: 一、前端跨端开发框架对比与流程 主流跨端框架 框架技术栈性能接近原生生态成熟度适用场景React NativeJS/React80%⭐⭐⭐⭐⭐…...
项目《基于Linux下的mybash命令解释器》(二)
一、使用系统命令的完整代码 #include<stdio.h> #include<wait.h> #include<stdlib.h> #include<unistd.h> #include<assert.h> #include<string.h> #include<pwd.h>#define ARG_MAX 10//防止参数不够,可以做到一改全改…...
arm64适配系列文章-第十章-arm64环境上jenkins的部署
ARM64适配系列文章 第一章 arm64环境上kubesphere和k8s的部署 第二章 arm64环境上nfs-subdir-external-provisioner的部署 第三章 arm64环境上mariadb的部署 第四章 arm64环境上nacos的部署 第五章 arm64环境上redis的部署 第六章 arm64环境上rabbitmq-management的部署 第七章…...
PyTorch生成式人工智能实战(2)——PyTorch基础
PyTorch生成式人工智能实战(2)——PyTorch基础 0. 前言1. 创建 PyTorch 张量2. PyTorch 张量索引和切片3. PyTorch 张量形状4. 在 PyTorch 张量数学运算小结系列链接 0. 前言 为了训练生成式人工智能模型,我们可以使用多种数据格式ÿ…...
解决高德地图AMapUtilCoreApi、NetProxy类冲突
问题: Duplicate class com.amap.apis.utils.core.api.AMapUtilCoreApi found in modules jetified-3dmap-10.0.600 (com.amap.api:3dmap:10.0.600) and jetified-search-9.7.1 (com.amap.api:search:9.7.1) Duplicate class com.amap.apis.utils.core.api.NetProx…...