本文最后更新于 2025-03-05,学习久了要注意休息哟

第一章 Git工具

Git for Data Science Applications (A Top Skill for 2020) | R-bloggers

1.1 基础内容

1.1.1 版本控制

git是比较常用的版本控制工具

Git版本控制与工作流_慕课手记

1.1.2 常见的版本控制工具

Git

SVN(Subversion)

CVS(Concurrent Versions System)

VSS(Micorosoft Visual SourceSafe)

TFS(Team Foundation Server)

1.1.3 软件安装

1、Linux 环境下安装

// 安装命令
sudo apt-get install git
// 检查安装是否成功
git --version

2、Windows 环境安装

# 安装路径
https://git-scm.com/downloads/win

双击安装包 除了修改路径其他的 一直下一步即可

1.2 git基础理论

1.2.1 工作区域

我们所使用的git 是区分了4个工作区域,其中,3个工作区域在本地,即工作区暂存区本地仓库这三个,此外还有一个远程仓库,他们之间的关系如下:

image-20240312162437073

  • workspace:工作区
  • staging area:暂存区/缓存区
  • local repository:版本库或本地仓库
  • remote repository:远程仓库
【工作区】:workspace 项目文件所在地,即平时存放代码的地方
【暂存区】:index 用于存放临时的改动,其本质上是一个文件,保存即将要提交的列表信息
【本地仓库】:Repository 就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
【远程仓库】:Remote 远程仓库是代码托管平台,也就是我们存放代码的分布式服务器,比较有名的有github 、 gitee(码云)

在我们的工程目录下面,当我们使用了git 后,会出现一个HEAD文件

1.2.2 工作流程

Git的工作流程一般如下:

1、在工作区中编写代码、文件。

2、将需要进行版本控制的文件导入到暂存区 index

3、将暂存区的文件提交到 本地仓库

基于我们的工作流程,让我们的Git衍生了三种状态

  • 已修改(modified) 在本地文件夹中 但是 没有进入缓存区 也没有进入本地仓库
  • 已缓存(staged) 到缓存区
  • 已提交(committed) 到本地仓库

1.2.3 文件的四种状态

版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没提交上。

未跟踪 (Untracked): 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.

**文件已经入库 ** (Unmodify): 文件入库但是未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件

文件已修改 (Modified): 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改 !

暂存状态 (Staged): . 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified

1.3 git的配置 命令

1.3.1 查看配置文件

我们这里给大家介绍几个命令,用于查看git的相关配置

# 查看git配置
git config -l
# 查看系统配置
git config --system --list
# 查看本地配置
git config --global --list

1.3.2 git相关的配置文件

我们可以通过下面的路径,去找到我们的配置文件,这里主要是要让大家知道,我们在终端中所看到的内容,都是从系统中各个文件所看到的,也就是说如果我们要去修改,可以通过命令也可以直接修改其文件,对我们的git 进行配置。

\Git\etc\gitconfig    系统级配置文件  git config --system --list
image-20231229155100110
C:\Users\tanzh\.gitconfig  用户级配置文件			git config --global --list

这里的位置是在用户目录下面,在其下面找到.gitconfig,这个文件是一个隐藏文件。

7e4b51daae30a7f25eafdb92e2fbee6

1.3.3git配置用户文件

==设置== ==用户名&邮箱==

在前面,我们已经理解了从什么地方去找我们的配置文件,现在我们需要将我们的用户名以及邮箱 配置到我们的文件内部,这里尽量使用我们的真实邮箱。

# 设置用户名
git config --global user.name ******
# 设置邮箱
git config --global user.email ******.com

1.4 Git项目搭建 命令

img

1.4.1 Git项目创建

当我们需要在当前目录下面去创建一个新的目录的时候,我们可以使用下面的目录进行创建

# 使用指令创建git 工程
$ git init

当我们执行完成本命令后,我们的工程目录下面就会多出一个.git的文件夹

1.4.2 Git项目克隆

此外,除了上面的那种直接创建项目,我们也可以在目录中克隆别人的项目,也就是将远程服务器上的项目完整的镜像到本地。

# 使用指令克隆指定的url 的项目
$ git clone [url]

1.5 Git文件操作 命令

1.5.2 查看文件状态

使用命令进行查看文件的状态

#查看所有文件状态
$ git status
# 添加所有文件到暂存区
$ git add
# 提交暂存区中的内容到本地仓库
$ git commit

使用流程

# 首先使用git status 查看所有文件的状态
$ git status  				# 查看所有文件状态
$ git status [filename] 	# 查看指定文件状态

# 再使用git add 将文件添加到缓存区
$ git add . 				# 将所有文件添加到缓存区
$ git add [filename]		# 将指定文件添加到缓存区

# 当你使用git add 添加到缓存区后 可以使用 git status 命令去查看一下文件是否添加成功
$ git status 

# 成功完成这一步后,就可以将缓存区中的文件导入到本地仓库 命令 :git commit 
$ git commit 				# 直接推送到本地仓库
$ git commit -m "加备注"	  # 对我们本次的推送加上注释

1.6 本地仓库— git搭建 操作部分

在我们前面,都是属于命令的介绍,现在我们正式的开始来操作以及配置git

1.6.1 安装git

1. 资料获取

官网资料:Git - Downloading Package (git-scm.com)

本地资料:【Linux基础】_06_给学生的资料\00_软件&系统

2. 官网下载

image-20231229174921256

3. Git安装

直接下一步就好了,没那么复杂,别想那么多

只需要更改安装路径

1.6.2 git配置

1. 修改git的配置文件

当我们刚安装完git 我们需要进行git的配置,这里只需要将我们的名字 和 邮箱进行配置

# 设置用户名
git config --global user.name [你的名称]
# 设置邮箱
git config --global user.email [你的邮箱]
2. 查看配置文件

在前面,已经为大家介绍过几个关于git查看的命令,现在我们已经在前面进行了设置名称 和邮箱,那我们现在就可以来查看一下是否设置成功,可以通过下面的命令进行查看

# 查看git配置
git config -l
# 查看系统配置
git config --system --list
# 查看本地配置
git config --global --list

1.6.3 创建本地仓库--直接创建

  1. 在本地文件夹内,右键点击Git Bash,打开git的命令行窗口
  2. 在命令行窗口中 输入 git init 用于初始化
$ git init	

运行完该命令后,会在你的文件夹内生成一个.git的隐藏文件

注意:.git文件是隐藏文件,如果看不到就可以根据下图操作打开显示隐藏文件

image-20231230194030177

1.6.4 创建本地仓库--克隆创建

此外,除了上面的那种直接创建项目,我们也可以在目录中克隆别人的项目,也就是将远程服务器上的项目完整的镜像到本地。

# 使用指令克隆指定的url 的项目
$ git clone [url]

这里的url 是远程仓库的地址

==使用这种方法的好处就是当我们配置好ssh公钥后,就不需要对在工程文件夹内进行远程链接操作,直接就可以上传==

1.7 远程仓库— 以码云为例 操作部分

由于我们的github访问速度不佳,所以我们本次教学不使用gitee

当然你也可以自己去搭建一个自己的git仓库, 在你的远程Linux主机上部署gitlab 就可以了

1.7.1 注册码云

==自己去创建账号==

网址:Gitee - 基于 Git 的代码托管和研发协作平台

自己注册账号并完善账号信息

在以后你们找工作可以将我们的项目写到你们的简历上

1.7.2 绑定SSH公钥

设置本机绑定SSH公钥,实现免密码登录

当你注册完成后,就可以生成一下你本机的SSH公钥,将这个公钥配置给gitee或者github,这样在后续的推送中就可以免密码登录了。

  1. 在Git中输入ssh-keygen,生成本机的ssh密钥
# 生成ssh密钥指令     | 下面的指令使用一个人即可
#	单纯的生成ssh密钥
$ ssh-keygen
# 	生成ssh密钥并通过-t rsa 添加  rsa加密算法
$ ssh-keygen -t rsa

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/tanzh/.ssh/id_rsa):				问你路径 -> 使用回车默认
Enter passphrase (empty for no passphrase):										问你密码 -> 使用回车 不需要密码
Enter same passphrase again:													确认密码 -> 使用回车 确认不需要密码
Your identification has been saved in /c/Users/tanzh/.ssh/id_rsa
Your public key has been saved in /c/Users/tanzh/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:f6o5PV67k6hcLhmF8y+cc7oxs1rFmaAgviPnbh9H/Hc tanzh@Tan_zhipeng
The key's randomart image is:
+---[RSA 3072]----+
|                 |
|                 |
|    . .  ..      |
|   . . oo..o o   |
|    .   S+  =    |
|     . ..o..     |
|  . + . .=O++.E  |
|   +.. ++=OX=o   |
|   oo.. *BBBoo   |
+----[SHA256]-----+
  1. 当你使用完上面的指令后,在C盘的用户目录下面有一个.ssh的目录,当你使用了这个指令后,会就生成两个文件

image-20231230184010499

  1. 打开gitee ,点击你的头像,然后点击设置
image-20231230184135021
  1. 点击SSH公钥 , 后面就是输入密码后就添加完成了
image-20231230184347722
  1. 后面就可以在仓库中去新建仓库了

1.7.3 新建远程仓库

  1. 点击头像旁边的 + 号
image-20240312154954153
  1. 输入信息
image-20240312155434075

1.8 本地代码推送到gitee 操作部分

1.8.1 链接远程仓库 - gitee

  1. 复制新建的远程仓库地址

image-20231230193602537

  1. 在git中输入下面的命令,进行与远程仓库的链接
# 这里的url 就是你远程仓库的地址,进行替换即可
$ git remote add origin [url] 
  1. 更新本地仓库

在进行更新的时候,最好本地项目文件夹内是没有文件的

# git pull origin master 是拉取远程仓库中master分支的代码到当前本地分支上
# origin	是远程名
# master	是远程仓库中的一个分支
$ git pull origin master

1.8.2 将本地内容推送到远程 - gitee

  1. 本地文件上传到缓存区
# 上传所有文件
$ git add .
# 上传指定文件
$ git add [文件名]
  1. 提交文件并添加注释
# "" 中为注释内容
$ git commit -m "注释"
  1. 将本地内容推送到远程
$ git push origin master

完成上面的操作,基本就对推送到远程这个事情就已经做完了, 我们可以去gitee中刷新一下,然后就可以看到我们的文件了

1.8.3 链接远程仓库 - github

  1. 查看当前远程仓库的设置
$ git remote -v

在这里会显示你的本地仓库,此时我们已经对gitee 进行远程链接了,所以我们就可以看到这些内容

origin-gitee <gitee仓库地址> (fetch)
origin-gitee <gitee仓库地址> (push)
  1. 将新建好的github链接到本地仓库
$ git remote add origin-github <github仓库地址>

1.8.4 将本地内容推送到远程 - github

  1. 本地文件上传到缓存区
# 上传所有文件
$ git add .
# 上传指定文件
$ git add [文件名]
  1. 提交文件并添加注释
# "" 中为注释内容
$ git commit -m "注释"
  1. 将本地内容推送到远程
$ git push origin-github master    # 用于github 
$ git push origin master		   # 用于gitee 
  1. 填写你的账户和密码 写上gitee 的账号和密码

image-20240227095429837

1.8.5 总结

1、建立远程仓库 和本地仓库  空文件夹内建议	
	#远程仓库的搭建看1.9.1小节
    #本地仓库建立指令
    $ git init
2、建立远程连接   本地工作区不要有其他文件
    # 这里的url 就是你远程仓库的地址,进行替换即可
    $ git remote add origin [url] 
3、将远程仓库进行回拉到本地     远程本地对其
    # git pull origin master 是拉取远程仓库中master分支的代码到当前本地分支上
    # origin	是远程名
    # master	是远程仓库中的一个分支
    $ git pull origin master
4、将本地的内容进行填充
	4.1 将内容复制到本地工作区 内   也就是有.git 的文件夹
	4.2 将文件推送到缓存区 -> 本地仓库
	# 上传所有文件   推送缓存
	$ git add .
	# "" 中为注释内容  推送到本地仓库
	$ git commit -m "注释"
5、将本地仓库内的数据推送到远程
	$ git push origin master

1.9 远程拉取的方式

操作流程
1、从远程拉取   
$ git clone https://gitee.com/zhipengtan/linux-lesson-plan.git
$ git clone [链接]
2、克隆完成后,将本地的项目文件复制到克隆文件夹下   <注:本地文件内不能有.git文件>
3、在本地 使用git 工具进行推送
	3.1 将内容复制到本地工作区 内   也就是有.git 的文件夹
	3.2 将文件推送到缓存区 -> 本地仓库
	# 上传所有文件   推送缓存
	$ git add .
	# "" 中为注释内容  推送到本地仓库
	$ git commit -m "注释"
	
操作原理: 讲远程仓库的 .git 拷贝下来 这个.git 文件内部有 身份验证 还有链接<已经链接好的> 

1.9.1 远程拉取

1.复制克隆代码

image-20240506140902340

2.在git 中输入 复制的代码

image-20240506141025763

到此远程拉取完成

1.9.2 添加文件

1.将项目文件添加进来

image-20240506141233556

1.9.3推送到远程

使用指令

$ git add .  				添加所有文件到缓存区
$ git commit -m "更新"		将缓存区的文件添加到 本地仓库
$ git push  origin master	将本地仓库内的文件上传到gitee 中

git add .
git 是 git 工具中 代码的一个特点 需要在命令前面添加git 标识符 

add 添加到本地缓存区指令
push 推送到远程
pull 从远程回到本地   远程本地对其

这个是可以更改的 不是固定的
origin master
远程名  分支名

1.10 git的分支

分支在GIT中相对较难,分支就是科幻电影里面的平行宇宙,如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过,在某个时间点,两个平行宇宙合并了,我们就需要处理一些问题了!

image-20231230200909182

1.10.1 git分支相关命令

# 列出所有本地分支
git branch

# 列出所有远程分支
git branch -r

# 新建一个分支,但依然停留在当前分支
git branch [branch-name]

# 新建一个分支,并切换到该分支
git checkout -b [branch]

# 切换分支
git checkout [branch]
git switch [branch]

# 合并指定分支到当前分支
$ git merge [branch]

# 删除分支
$ git branch -d [branch-name]

# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]



分支练习 
 在本地上 创建 新分支
 1、列出所有分支
 2、建立一个新分支
 3、查看所有分支
 4、切换分支
 5、删除分支

master主分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作,工作一般情况下在新建的dev分支上工作,工作完后,比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上来。

第二章 VIM 工具

vim logo png 10 free Cliparts | Download images on Clipground 2023

2.1 VIM安装

  1. 在终端中输入下面的指令进行安装
$ vim -V					# 用于检测是否安装
$ sudo apt-get install vim	# 用于安装

2.2 VIM 的介绍

vim 是 Unix 类操作系统中最为流行的==文本编辑器==。尽管目前已有 gedit 等一些工作在图形界面下使用起来也更为方便的文本编辑器,但在很多情况下,vim 这种专为字符界面操作而设计的编辑器恐怕还是要充当首选,比如通过 telnet
网络登录来使用系统时。

2.2.1 VIM的模式

在vim中分为了三种模式,分别是 命令模式输入模式底行模式

==命令模式==:控制编辑器的操作,例如复制粘贴剪切等。

==编辑模式==:专门编辑代码的状态。

==底行模式==:以冒号开头输入命令的状态,保存退出。

2.2.2 vim的启动

2、要使用 vim 编辑一个文本文件,终端命令:

(1)vim 文件名 : 打开一个文件,光标在首行,如果没有该文件则创建再打开。

vim 文件名
vim main.c		# 新版本使用的命令
vi main.c		# 老版本使用的命令

(2)vim 文件名 +行号: 打开文件直接进入指定行。

vim 文件名 行号
vim main.c 1000

在无法使用光标键的情况下,可用上下左右移动光标到指定位置,

H 左移

L 右移

J 下移

K 上移

2.3 模式的切换

用户刚刚启动 vi/vim,便进入了命令模式。

==命令模式--->编辑模式==:可按这些按键:

  • i :在当前光标所在进行编辑

  • a:在当前光标之后

  • o:当前光标的下一行新建一行进行插入

  • I:在当前行的行首进行编写

  • A:在当前光标所在行的末尾

  • 0:当前光标的上一行新建一行进行插入

==命令模式--->底行模式==: 使用 : 进入到底行模式

==编辑模式/底行模式--->命令模式==:按下Esc键

img

2.4 常用命令

以下是普通模式常用的几个命令:

切换模式的命令
	命令模式--->编辑模式
        i :在当前光标所在进行编辑

        a:在当前光标之后

        o:当前光标的下一行新建一行进行插入

        I:在当前行的行首进行编辑

        A:在当前光标所在行的末尾 

        0:当前光标的上一行新建一行进行插入

	命令模式--->底行模式: 
		使用 `:` 进入到底行模式  或者空格

	编辑模式/底行模式--->命令模式:
		按下Esc键

命令模式命令 
    x 	删除当前光标所在处 后面一个 字符。 
    
    X 	删除当前光标所在处 前面面一个 字符。
    
    ndd 	剪切当前行 n:代表需要剪切的行数

    nyy 	复制当前行 n:代表需要复制的行数

    p	(小写) 粘贴剪贴板内容到光标下方。 

    P	(大写) 粘贴剪贴板内容到光标上方。 

    u 	撤销上一次操作。 

	Ctrl + r 重做上一次撤销的操作  用于撤销 u   u 的反义词

底行模式命令
    :w 	保存文件。  仅保存 不退出

    :q 	退出 Vim 编辑器。  仅退出 不保存
    
    :wq 保存 并 退出   

    :q! 强制退出 Vim 编辑器,不保存修改。

若想要编辑文本,只需要启动 Vim,进入了命令模式,按下 i 切换到输入模式即可。

命令模式只有一些最基本的命令,因此仍要依靠底线命令行模式输入更多命令。

2.4 vim 命令:

2.4.1 文件保存修改

:w					保存文件  如果不小心按了ctrl s保存,此时编辑器会进入假卡死状态,按下ctrl q恢复

:q					退出文件,回到终端命令行

:wq					保存并退回到 shell

:q!					放弃对文件的修改,强制退回到终端
 
:set nu			    显示行号

:set nonu			不显示行号

:w 文件名			  保存该文件,并另存为某一个文件

:%s/aaa/bbb/g		将全文的aaa都替换成bbb					全文替换

:m,n s/aaa/bbb/g 	将m行到n行的aaa都替换成bbb;m、n是数字	按行替换
2. 文件内容修改
x 		删除当前字符

nx		删除光标所在位置往后n个字符

X		删除前面字符

nX		删除光标所在位置往前n个字符

dd		删除光标所在行

ndd		删除光标起始的n行

D		删除光标后面的内容

S		删除整行

u		撤销

ctrl + r 撤销的恢复	

yy:		复制

nyy:	复制光标起始的n行

p 		 粘贴
3. 移动
命令模式下


    % 在命令模式下,把光标定位到某个括号()/{}处,输入%,会自动跳转到匹配的另一边括号处,这样会方便查看匹配的括号。

    ctrl+f		向前翻动一页

    ctrl+b		向后翻动一页
    
    gg			光标移动到文件开头
    
    G			光标移动到文件结尾

底行模式下

	:行号		移动到指定行
4. 查找
命令模式下
    /字符串			在当前文件查找该字符串
     	
	n	查找下一个

	?	向上查找

2.5 其他命令

  1. 设置下划线

给光标所在行设置下划线,但不固定:

set cursorline   
set nocursorline   
  1. 语法高亮
syntax on
syntax off    //关键字变颜色
  1. 自动缩进 -- 待更新
set autoindent			打开
set noautoindent		关闭
  1. 配置文件 永久改变
 cd /etc/vim/
vim vimrc
  1. 分屏操作:
在已经打开的文件中对文件进行操作。
	水平分屏
		:new + filename
	垂直分屏
		:vnew + filename
	切换分屏
		ctrl+ w + w
	退出分屏   
		:q
	取消分屏
		ctrl + w + o  取消其他分屏

2.6 产生了交换文件

如果出现了下面这种情况,就说明你的文件已经产生了 交换文件 我们需要去删除交换文件

image-20240313112534253

在这个里面,其实也提示了你这么做

image-20240313112805832

这里呢,我们可以通过删除的方式进行结果

操作如下

  1. 首先,需要先退出该界面,可以将键盘置为字母大写 ,然后,通过键盘上的Q键进行退出

  2. 需要通过ls -a 命令,来查看文件名称

student@student-machine:~$ ls -a
.              .bashrc  .dmrc             .local       .sunpinyin  .vscode-server    .xsession-errors.old  图片
..             .cache   examples.desktop  main.c       .vim        .wget-hsts        公共的                文档
'              .compiz  .gconf            .main.c.swp  .viminfo    .Xauthority       模板                  下载
.bash_history  .config  .gnupg            .presage     .vimrc      .xinputrc         视频                  音乐
.bash_logout   .dbus    .ICEauthority     .profile     .vscode     .xsession-errors  数据结构              桌面

从这个里面,我们可以看到,有一个文件,名称为 .main.c.swp

  1. 使用rm 命令对其进行删除
student@student-machine:~$ rm .main.c.swp

[!NOTE]

关于文件如何产生的问题:

在进行编辑的时候,没有保存,直接关闭终端或者退出

2.7 VIM 键位图

img

第三章 GCC工具讲解

3.1 GCC:交叉编译器

3.1.1 gcc 命令的使用

能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件。

64位
32位
8位
RAM

编译命令:gcc [选项] 源文件 [选项] [目标文件]

运行命令:./目标文件 -> a.out

显示全部警告

​ -Wall

警告和错误的区别

​ 警告 某些警告在一定程度上可以忽略 编译并输出 可执行文件 例如 提醒你 变量未使用...

​ 错误 不行 错误必须全部解决,编译器才能对你的源码进行编译

​ 错误和警告都是针对语法的,不针对逻辑性错误

如果有多文件交叉使用,需要将多个源文件一起编译;例如 gcc 1.c 2.c 3.c -o test

3.1.2 C程序编译阶段 ==要记住==

gcc 编译流程

1. 预处理

处理程序的头文件展开、宏定义替换、删注释等内容,生成.i文件;

gcc  -E  hello.c -o  1hello.i

==不报错,只对源码进行展开==

2. 编译

检查代码的规范性,是否有语法错误,将代码翻译成汇编语言;生成 .s文件

gcc  -S  hello.i -o  hello.s

3. 汇编

将.s文件转换成==二进制目标文件==,生成.o文件

动态库 和 静态库

gcc  -c  hello.s  -o  hello.o

4. 链接

将程序中所用到的库加载到代码中,一般路径是/usr/lib;生成最终的可执行文件

gcc  hello.o  -o  hello

如果不选择选项和目标文件,则会默认生成一个a.out的可执行文件

3.2 GDB调试工具

3.2.1 GDB 介绍

gdb可以让用户查看程序的内部结构、打印变量值、设置断点、以及单步调试源码。

加上 -g 选项编译才能使用gdb工具: gcc -g hello.c -o test
然后使用命令进入调试界面: gdb 目标可执行文件test

3.2.2 GDB 常用命令

启动gdb : gdb 文件名

查看代码: list / l

设置断点: b 函数/行号

开始运行: r

查看变量: p 变量名 / print 变量名

单步执行: n

退出gdb : q / quit

3.2.2 GDB 操作过程

1、 查看代码 list l

(gdb) l
1       #include <stdio.h>
2       #include "Func_file.h"
3       int main()
4       {
5               int Jin_bi = 0;   // 定义了一个int类型 的 jinbi 变量, 并赋初值为 0
6
7
8               printf("询问:初始金币值为:");
9               scanf("%d" , &Jin_bi);
10

2、设置断点 b

设置函数名为断点

b 函数名
b 路径\文件名 函数名

设置行号为断点

// 在当前所在文件中用 进入调试的一个文件,是main() 函数所在文件  main.c
b 行号

// 其他文件
b 路径\文件名 行号

3、 开始运行

使用命令

run
r

4、单步运行

使用命令

n

5、打印变量

通过命令

p
print

3.2.4 GDB基本命令 -> ==用于查询==

1、运行命令

run:简记为 r ,其作用是运行程序,当遇到断点后,程序会在断点处停止运行,等待用户输入下一步的命令。

continue (简写c ):继续执行,到下一个断点处(或运行结束)

next:(简写 n),单步跟踪程序,当遇到函数调用时,也不进入此函数体;此命令同 step 的主要区别是,step 遇到用户自定义的函数,将步进到函数中去运行,而 next 则直接调用函数,不会进入到函数体内。

step (简写s):单步调试如果有函数调用,则进入函数;与命令n不同,n是不进入调用的函数的

until:当你厌倦了在一个循环体内单步跟踪时,这个命令可以运行程序直到退出循环体。

until+行号: 运行至某行,不仅仅用来跳出循环

finish: 运行程序,直到当前函数完成返回,并打印函数返回时的堆栈地址和返回值及参数值等信息。

call 函数(参数):调用程序中可见的函数,并传递“参数”,如:call gdb_test(55)

quit:简记为 q ,退出gdb

2、设置断点

break n (简写b n):在第n行处设置断点

(可以带上代码路径和代码名称: b OAGUPDATE.cpp:578)

b fn1 if a>b:条件断点设置

break func(break缩写为b):在函数func()的入口处设置断点,如:break cb_button

delete 断点号n:删除第n个断点

disable 断点号n:暂停第n个断点

enable 断点号n:开启第n个断点

clear 行号n:清除第n行的断点

info b (info breakpoints) :显示当前程序的断点设置情况

delete breakpoints:清除所有断点:

3、查看源码

list :简记为 l ,其作用就是列出程序的源代码,默认每次显示10行。

list 行号:将显示当前文件以“行号”为中心的前后10行代码,如:list 12

list 函数名:将显示“函数名”所在函数的源代码,如:list main

list :不带参数,将接着上一次 list 命令的,输出下边的内容。

4、打印表达式

print 表达式:简记为 p ,其中“表达式”可以是任何当前正在被测试程序的有效表达式,比如当前正在调试C语言的程序,那么“表达式”可以是任何C语言的有效表达式,包括数字,变量甚至是函数调用。

print a:将显示整数 a 的值

print ++a:将把 a 中的值加1,并显示出来

print name:将显示字符串 name 的值

print gdb_test(22):将以整数22作为参数调用 gdb_test() 函数

print gdb_test(a):将以变量 a 作为参数调用 gdb_test() 函数

display 表达式:在单步运行时将非常有用,使用display命令设置一个表达式后,它将在每次单步进行指令后,紧接着输出被设置的表达式及值。如: display a

watch 表达式:设置一个监视点,一旦被监视的“表达式”的值改变,gdb将强行终止正在被调试的程序。如: watch a

whatis :查询变量或函数

info function: 查询函数

扩展info locals: 显示当前堆栈页的所有变量

5、查看运行信息

where/bt :当前运行的堆栈列表;

bt backtrace 显示当前调用堆栈

up/down 改变堆栈显示的深度

set args 参数:指定运行时的参数

show args:查看设置好的参数

info program: 来查看程序的是否在运行,进程号,被暂停的原因。

6、分割窗口

layout:用于分割窗口,可以一边查看代码,一边测试:

layout src:显示源代码窗口

layout asm:显示反汇编窗口

layout regs:显示源代码/反汇编和CPU寄存器窗口

layout split:显示源代码和反汇编窗口

Ctrl + L:刷新窗口

7、cgdb强大工具

cgdb主要功能是在调试时进行代码的同步显示,这无疑增加了调试的方便性,提高了调试效率。界面类似vi,符合unix/linux下开发人员习惯;如果熟悉gdb和vi,几乎可以立即使用cgdb。

第四章 VsCode

4.1 安装 VSVode

1、双击安装包

image-20250305145328257

2、同意

image-20250305145347630

3、设定安装位置

image-20250305145433885

4、直接下一步

image-20250305145450007

5、全选

image-20250305145510786

6、点击安装

image-20250305145527650

4.2 插件推荐

C语言开发必备插件

image-20250305150305197

image-20250305150504116

image-20250305150515766

image-20250305150536220

image-20250305150604802

4.3 远程连接 Linux

找到远程连接的图标

image-20250305151033907

创建连接

image-20250305151200066

选择第一个 如果第一个有中文 则 自己创建另外的目录存放 设置 指定自定义配置文件

image-20250305151221106

创建连接成功后 ,点击连接

image-20250305151249969

选择Linux

image-20250305151307188

输入密码

image-20250305151319893

点击接收

image-20250305151408372

点击开关文件 资源管理器

image-20250305151426879

选择你的工作区域 不一定和我一样

image-20250305151456716

再次输入密码

image-20250305151510825

点击信任

image-20250305151531124