
07_Linux-开发环境
本文最后更新于 2025-03-05,学习久了要注意休息哟
第一章 Git工具

1.1 基础内容
1.1.1 版本控制
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个工作区域在本地,即工作区
、 暂存区
、本地仓库
这三个,此外还有一个远程仓库
,他们之间的关系如下:
- 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

C:\Users\tanzh\.gitconfig 用户级配置文件 git config --global --list
这里的位置是在用户目录下面,在其下面找到.gitconfig,这个文件是一个隐藏文件。

1.3.3git配置用户文件
==设置== ==用户名&邮箱==
在前面,我们已经理解了从什么地方去找我们的配置文件,现在我们需要将我们的用户名
以及邮箱
配置到我们的文件内部,这里尽量使用我们的真实邮箱。
# 设置用户名
git config --global user.name ******
# 设置邮箱
git config --global user.email ******.com
1.4 Git项目搭建 命令

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. 官网下载
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 创建本地仓库--直接创建
- 在本地文件夹内,右键点击Git Bash,打开git的命令行窗口
- 在命令行窗口中 输入 git init 用于初始化
$ git init
运行完该命令后,会在你的文件夹内生成一个.git的隐藏文件
注意:.git文件是隐藏文件,如果看不到就可以根据下图操作打开显示隐藏文件
1.6.4 创建本地仓库--克隆创建
此外,除了上面的那种直接创建项目,我们也可以在目录中克隆别人的项目,也就是将远程服务器上的项目完整的镜像到本地。
# 使用指令克隆指定的url 的项目
$ git clone [url]
这里的url 是远程仓库的地址
==使用这种方法的好处就是当我们配置好ssh公钥后,就不需要对在工程文件夹内进行远程链接操作,直接就可以上传==
1.7 远程仓库— 以码云为例 操作部分
由于我们的github访问速度不佳,所以我们本次教学不使用gitee
当然你也可以自己去搭建一个自己的git仓库, 在你的远程Linux主机上部署gitlab 就可以了
1.7.1 注册码云
==自己去创建账号==
自己注册账号并完善账号信息
在以后你们找工作可以将我们的项目写到你们的简历上
1.7.2 绑定SSH公钥
设置本机绑定SSH公钥,实现免密码登录
当你注册完成后,就可以生成一下你本机的SSH公钥,将这个公钥配置给gitee
或者github
,这样在后续的推送中就可以免密码登录了。
- 在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]-----+
- 当你使用完上面的指令后,在C盘的用户目录下面有一个
.ssh
的目录,当你使用了这个指令后,会就生成两个文件
- 打开gitee ,点击你的头像,然后点击设置

- 点击SSH公钥 , 后面就是输入密码后就添加完成了

- 后面就可以在仓库中去新建仓库了
1.7.3 新建远程仓库
- 点击头像旁边的 + 号

- 输入信息

1.8 本地代码推送到gitee 操作部分
1.8.1 链接远程仓库 - gitee
- 复制新建的远程仓库地址
- 在git中输入下面的命令,进行与远程仓库的链接
# 这里的url 就是你远程仓库的地址,进行替换即可
$ git remote add origin [url]
- 更新本地仓库
在进行更新的时候,最好本地项目文件夹内是没有文件的
# git pull origin master 是拉取远程仓库中master分支的代码到当前本地分支上
# origin 是远程名
# master 是远程仓库中的一个分支
$ git pull origin master
1.8.2 将本地内容推送到远程 - gitee
- 本地文件上传到缓存区
# 上传所有文件
$ git add .
# 上传指定文件
$ git add [文件名]
- 提交文件并添加注释
# "" 中为注释内容
$ git commit -m "注释"
- 将本地内容推送到远程
$ git push origin master
完成上面的操作,基本就对推送到远程这个事情就已经做完了, 我们可以去gitee中刷新一下,然后就可以看到我们的文件了
1.8.3 链接远程仓库 - github
- 查看当前远程仓库的设置
$ git remote -v
在这里会显示你的本地仓库,此时我们已经对gitee 进行远程链接了,所以我们就可以看到这些内容
origin-gitee <gitee仓库地址> (fetch)
origin-gitee <gitee仓库地址> (push)
- 将新建好的github链接到本地仓库
$ git remote add origin-github <github仓库地址>
1.8.4 将本地内容推送到远程 - github
- 本地文件上传到缓存区
# 上传所有文件
$ git add .
# 上传指定文件
$ git add [文件名]
- 提交文件并添加注释
# "" 中为注释内容
$ git commit -m "注释"
- 将本地内容推送到远程
$ git push origin-github master # 用于github
$ git push origin master # 用于gitee
- 填写你的账户和密码 写上gitee 的账号和密码
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.复制克隆代码

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

到此远程拉取完成
1.9.2 添加文件
1.将项目文件添加进来
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中相对较难,分支就是科幻电影里面的平行宇宙,如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过,在某个时间点,两个平行宇宙合并了,我们就需要处理一些问题了!
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 工具

2.1 VIM安装
- 在终端中输入下面的指令进行安装
$ 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键
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 其他命令
- 设置下划线
给光标所在行设置下划线,但不固定:
set cursorline
set nocursorline
- 语法高亮
syntax on
syntax off //关键字变颜色
- 自动缩进 -- 待更新
set autoindent 打开
set noautoindent 关闭
- 配置文件 永久改变
cd /etc/vim/
vim vimrc
- 分屏操作:
在已经打开的文件中对文件进行操作。
水平分屏
:new + filename
垂直分屏
:vnew + filename
切换分屏
ctrl+ w + w
退出分屏
:q
取消分屏
ctrl + w + o 取消其他分屏
2.6 产生了交换文件
如果出现了下面这种情况,就说明你的文件已经产生了 交换文件 我们需要去删除交换文件
在这个里面,其实也提示了你这么做
这里呢,我们可以通过删除的方式进行结果
操作如下
-
首先,需要先退出该界面,可以将键盘置为
字母大写
,然后,通过键盘上的Q键进行退出 -
需要通过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
- 使用rm 命令对其进行删除
student@student-machine:~$ rm .main.c.swp
[!NOTE]
关于文件如何产生的问题:
在进行编辑的时候,没有保存,直接关闭终端或者退出
2.7 VIM 键位图
第三章 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、双击安装包
2、同意

3、设定安装位置

4、直接下一步

5、全选

6、点击安装

4.2 插件推荐
C语言开发必备插件
4.3 远程连接 Linux
找到远程连接的图标

创建连接
选择第一个 如果第一个有中文 则 自己创建另外的目录存放 设置 指定自定义配置文件
创建连接成功后 ,点击连接
选择Linux
输入密码
点击接收
点击开关文件 资源管理器
选择你的工作区域 不一定和我一样
再次输入密码
点击信任
- 感谢你赐予我前进的力量