实验三 编辑器 vi 、编译器 gcc 和调试器 gdb 的使用
文章目录
- 实验三 编辑器 vi 、编译器 gcc 和调试器 gdb 的使用
- 实验目的
- 实验原理
- 1. vi和vim简介
-
- 2. vi的三种工作模式
- 2.1 **命令模式**
- 2.2 **末行模式**
- 2.3 **编辑模式**
- 3. vi的基本操作
- 3.1 vi打开/新建文件
- vi [file]
- vi [file] +[line]
- 3.2 vi光标移动
-
- 3.3 vi整行操作
- 1) 删除整行
- 2) 复制整行与粘贴
- 3) 撤销和恢复撤销
- 3.4 vi末行搜索
- 3.5 vi行号显示与语法高亮
- 3.6 vi的异常退出
- 4. indent缩进排版程序
- indent程序的安装
- indent [file.c]
- 5. gcc编译器
- 5.1 gcc简介
- 5.2 gcc安装(以Ubuntu为例)
- 5.3 gcc下的编译过程
- gcc -E [file.c] -o [name.i]
- gcc -S [file.c] -o [name.s]
- gcc [file.c]
- gcc [file.c] -o [name]
- 6. gdb调试器
- 5.1 gdb简介
- 5.2 gdb常用命令
- 5.3 gdb基础调试过程
- 实验作业
实验目的
掌握编辑器 vi的基本操作,能够使用 vi 来编辑 C 语言源程序;学习indent缩进排版程序的使用;掌握用 gcc 进行编译;掌握用gdb进行调试
实验原理
1. vi和vim简介
Vi的使用相关博文
1.1 vi
1.2 vim
vim
是从 vi
发展出来的一个文本编辑器,支持 代码补全、编译 及 错误跳转 等方便编程的功能特别丰富,在程序员中被广泛使用,被称为 编辑器之神
2. vi的三种工作模式
2.1 命令模式
- 敲击键盘上的
ESC
进入 - 打开文件首先进入命令模式,是使用
vi
的 入口 - 通过 命令 对文件进行常规的编辑操作,例如:定位、翻页、复制、粘贴、删除……
- 在其他图形编辑器下,通过 快捷键 或者 鼠标 实现的操作,都在 命令模式 下实现
2.2 末行模式
- 敲击键盘上的
:
进入 - 要退出
vi
返回到控制台,需要在末行模式下输入命令 - 末行模式 是
vi
的 出口
命令 | 英文 | 功能 |
---|
w | write | 保存 |
q | quit | 退出,如果没有保存,不允许退出 |
q! | quit | 强行退出,不保存退出 |
wq | write & quit | 保存并退出 |
2.3 编辑模式
3. vi的基本操作
3.1 vi打开/新建文件
vi [file]
vi test.c
vi new.c
vi [file] +[line]
vi test.c +3
PS:如果只带上 +
而不指定行号,会直接定位到文件末尾
3.2 vi光标移动
1) 上、下、左、右
命令 | 功能 | 手指 |
---|
h | 向左 | 食指 |
j | 向下 | 食指 |
k | 向上 | 中指 |
l | 向右 | 无名指 |
2) 行内移动
命令 | 功能 |
---|
w | 向后移动一个单词 |
b | 向前移动一个单词 |
0 | 行首 |
^ | 行首,第一个不是空白字符的位置 |
$ | 行尾 |
3) 行数移动
命令 | 功能 |
---|
gg | 文件顶部 |
G | 文件末尾 |
[line]gg | 行首,第一个不是空白字符的位置 |
[line]G | 行首,第一个不是空白字符的位置 |
:数字 | 行首,第一个不是不是空白字符的位置 |
3.3 vi整行操作
1) 删除整行
命令 | 功能 |
---|
dd | 删除当前光标所在的整行 |
[num]dd | 删除当前光标开始的n整行 |
2) 复制整行与粘贴
命令 | 功能 |
---|
yy | 复制当前光标所在的整行 |
[num]yy | 复制当前光标开始的n整行 |
p | 将复制内容粘贴光标的后面 |
P | 将复制内容粘贴至当前光标前 |
3) 撤销和恢复撤销
命令 | 英文 | 功能 |
---|
u | undo | 撤销上次命令 |
CTRL + r | redo | 恢复撤销的命令 |
3.4 vi末行搜索
命令 | 功能 |
---|
/[string]+Enter | 搜索当前string,光标跳转至第一个string出现位置 |
n | 光标跳转至下一个string出现位置 |
shift+n | 光标跳转至上一个string出现位置 |
3.5 vi行号显示与语法高亮
命令 | 功能 |
---|
set nu | 添加行号显示 |
set nonu | 取消行号显示 |
syntax enable on | 显示语法高亮 |
syntax off | 取消语法高亮 |
3.6 vi的异常退出
假设使用vi编辑hello.c时,出现异常退出
系统会自动生成**.swp**隐藏文件
再次使用vi进入hello.c时,会出现如下提示
按D键后,之前的编辑未生效,.swp文件也被删除
4. indent缩进排版程序
indent程序的安装
sudo apt install indent
indent [file.c]
indent test.c
5. gcc编译器
5.1 gcc简介
GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言译器。GNU编译器套件包括C、C++、Objective-C、Java前端,也包括了这些语言的库,如libstdc++,libgcj等。
5.2 gcc安装(以Ubuntu为例)
查看当前
cd /usr/bin
find gcc
未安装,执行下行命令
sudo apt-get install build-essential
已安装,查看当前gcc版本
gcc -v
5.3 gcc下的编译过程
gcc -E [file.c] -o [name.i]
gcc -E test.c -o test.i
vim test.i
gcc -S [file.c] -o [name.s]
gcc -S test.c -o test.s
vim test.s
gcc [file.c]
gcc test.c
./a.out
gcc [file.c] -o [name]
gcc test.c -o test.out
./test.out
6. gdb调试器
5.1 gdb简介
GDB(the GNU Project Debugger)是 GNU开源组织发布的一个强大的Linux下的程序调试工具,可以调试 C、C++、Objective-C 和 Pascal 等多种语言的程序
5.2 gdb常用命令
命令 | 示例 | 功能 |
---|
file | file [name] | 装入想要调试的可执行文件 |
break | break [line] | 设置断点 |
delete | delete [line] | 清除单行的单个断点 |
clear | clear [line] | 清除单行的所有断点 |
disable | disable [num] | 设置序号为num的断点暂时失效 |
enable | enable [num] | 设置序号为num的断点重新生效 |
run | run | 运行调试程序 |
list | list [line1],[line2] | 查看line1-line2的源代码 |
next | next | 执行一行源代码但不进入函数内部 |
step | step | 执行一行源代码而且进入函数内部 |
info | info [command] | 显示相关命令当前信息 |
kill | kill | 结束当前调试 |
print | print [var] | 在屏幕上打印var变量的值 |
quit | quit | 退出gdb调试程序 |
5.3 gdb基础调试过程
-
编译文件,进入gdb调试器
-
使用list命令显示当前文件源代码
-
设置断点,显示断点信息
-
运行程序至断点1
-
单步调试运行
6. 结束当前调试
-
退出gdb调试程序
实验作业
用 vi 编辑器写一段 C 语言的程序,并对这个程序的格式进行整理,对程序进行编译,最后运行这个程序。写出你的程序和实现以上操作的全部的指令。
touch test.c
vi test.c
indent test.c
gcc test.c -o test.out
./test.out
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)