目录
1. vim:文本编辑器
1.1 各种模式的切换
补充:ctrl r命令
1.2 命令模式的操作
1.3 插入模式的操作
1.4 底行模式的操作
1.5 配置vim环境
1.6 配置亲属关系
2. gcc/g++:编译器
2.1 预处理:
2.2 编译:
2.3 汇编:
2.4 链接:
2.5 执行可执行程序
2.6 函数库
3. gdb:调试器
3.1 调试:gdb 可执行文件
3.2 调试命令的使用
Linux🌷
在windows系统平台下,我们可以使用vs2019等软件进行代码的编写、编译、调试以及运行,这种软件都是集成开发软件。
那么在Linux系统下呢?我们
编写代码使用:vim(文本编辑器);
编译代码使用:gcc/g++(编译器);
调试代码使用:gdb(调试器);
下面系统的介绍下各种工具的使用。
1. vim:文本编辑器
vim是一种文本编辑器,从定位上来说和记事本没有任何差别,但经过配置后的vim却能够很好的帮助我们在Linux系统环境下进行代码的编写。
vim还是一种多模式的编辑器。
我们常常使用以下三种模式完成代码的编写:命令模式、插入模式、底行模式。
1.1 各种模式的切换
1. 我们刚进入vim时默认是在命令模式的;
2. 按键盘上的 i 键便可以进入插入模式;
3. 按左上角的Esc键便可以返回到命令模式;
4. 在命令模式下按 shift : 进入底行模式;
5. 在底行模式下输入 :wq! 回车退出vim。
其中 w:保存,q:退出,!:强制
下面一个图解进行更好的梳理:
补充:ctrl r命令
按住ctrl r后会出现上述情况,我们之间输入原先命令的部分片段,则会出来原先全部的命令
1.2 命令模式的操作
移动光标:
上下左右(键盘),HJKL 左下上右
shift ^ 光标定位至行首; shift $ 光标定位至行尾
gg 光标定位至起始行; shift g 光标定位至末尾行;12 shift g 光标定位至12行;
w 向后移动一个单词; b 向前移动一个单词; (这两个并不绝对是以一个单词为单位的)
文本操作:
yy 复制当前行(光标所在的位置)
2yy 复制当前行及其之后的一行(支持多行操作)
p 粘贴
np 一次重复粘贴n行
u 撤销
dd 剪切当前行(光标所在的位置)
nyy 剪切当前行及其之后的n-1行(支持多行操作)
shift ~ 大小写转换(光标所在的字符)若:大写—>小写;小写—>大写
x 删除光标所在位置的字符(支持nx)
X 删除光标所在位置的前一个字符(支持nX)
r 替换当前光标所在的字符(支持nr—>所在+后n-1都替换为同一字符)
shift r 直接进入替换模式,进行多个内容的替换,按Esc返回命令模式
ctrl r 撤销刚刚的撤销
1.3 插入模式的操作
i 在光标所在处进入
a 在光标所在处的右一字符处进入
o 在光标所在行下建一空行进入,光标在新建行的行首
1.4 底行模式的操作
set nu 调出行号
set nonu 取消行号
w 保存
q 退出
! 强制
vs 文件名 多文件操作
ctrl w w 在两屏中切换光标
在底行模式下wq退出的是光标所在屏
1.5 配置vim环境
在没有配置vim环境时,打开使用vim编辑代码则相当于使用记事本,
配置了vim环境则是在编写代码时有适当的缩进、高光、括号配对等。
可以使用如下命令进行简单环境的配置(足够使用):
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
注意:
要在自己的用户下进行配置
出现如下所示则代表成功
vim配置在自己的文件中,只会影响自己的操作;
对于root用户也一样,root有自己的vim配置文件,只影响自己。
1.6 配置亲属关系
在root用户下使用下面命令:
vim /etc/sudoers
对文件进行如下配置:
此后我们便可以使用sudo命令(提升普通用户的权限):
2. gcc/g++:编译器
编译器主要完成四个功能:预处理、编译、汇编、链接。
下面看一下它们的具体功能:
预处理:头文件的展开、宏替换、条件编译、去掉注释;
编译:检查代码是否有语法错误,将代码翻译成汇编语言;
汇编:将汇编代码转化为机器可识别的二进制代码文件;
链接:生成可执行文件或库文件。
下面看一下它们到底怎么使用吧!
2.1 预处理:
-E 开始进行翻译,完成预处理之后停下来!
-o 指定特定的文件
hello.i .i后缀表已经过预处理的C原始程序
2.2 编译:
-S 开始进行翻译,完成编译之后停下来!
-o 指定特定的文件
hello.s .s后缀表已经过编译的C原始程序,生成汇编代码了
2.3 汇编:
-c 开始进行翻译,完成汇编之后停下来!
-o 指定特定的文件
hello.o .o后缀表已经过汇编的C原始程序,生成二进制的目标代码了
2.4 链接:
hello 链接生成的可执行程序
2.5 执行可执行程序
2.6 函数库
函数库一般分静态库和动态库两种。
静态库:.a后缀
动态库:.so后缀
ldd 可执行程序:
由此可知,gcc默认是以动态链接方式,形成可执行程序
3. gdb:调试器
3.1 调试:gdb 可执行文件
由上述命令我们便可以进入到Linux系统下的调试功能
程序的发布方式有两种, debug 模式和 release 模式Linux gcc/g++ 出来的二进制程序,默认是 release 模式要使用 gdb 调试,必须在源代码生成二进制程序的时候 , 加上 - g 选项
3.2 调试命令的使用
run 直接执行(相当于vs中的F5)
list 显示代码(l也可用于显示代码)(一般是从main函数上下行进行显示),若后面直接跟 l 则续上之前显示的行继续显示
l 行号(从此行号上下行显示代码)
b 行号(给第几行打断点)
s 逐步执行(相当于F11)
n 逐过程执行(相当于F10)
display 要显示的内容:常显示
undisplay 行号:取消常显示
p/P 要显示的内容:只显示一次
finish (结束当前的函数,跑完函数并退出,类似于break)
continue (直接到达下一个断点处)
info b (显示断点信息)
d 行号(删除对应行处的断点)
disable 行号(禁用对应行处的断点)
enable 行号(打开对应行处的断点)
until 行号(在一个函数内部直接到达指定行)
set var 要修改的内容(修改对应的值)
bt (查看栈参数)
坚持打卡!😃