vim练级
很棒的文章:https://www.jianshu.com/p/2f9ab65776d4
补充实用技巧:
多行注释:ctr + v 进入块可视化 再按 shift + i 输入 // + 两下esc,取消注释行选中//按 d
全选替换:以下命令将文中所有的字符串idiots替换成managers:
:1,$s/idiots/manages/g
垂直分屏:冒号模式下vsp +file, ctr +w可以切换分屏
格式化c文件:gg=G
补全代码:
Ctrl-E保持现有的输入文字并退出补全;Ctrl-Y选择补全项并退出补全;Ctrl-P和Ctrl-N选择项目,选中的项会被直接补全到光标所在位置,无需按回车。
gdb
gcc -g 需要调试的文件 #加入调试信息
gdb 可执行程序
list——显示代码
- l(简写) 查看main前后10行
- l 函数名
- l 行号
break——断点
- b 行号 [if 条件]
- b 函数名
- delete 断点号
查看
- i b 查看断点
运行
- run 从开始运行到断点
- next 单步调试
- step 单步调试,遇到函数进入
- continue 当前运行到下一个断点
查看变量值
- print 变量名
- display 跟踪显示变量
- x 查看内存
- whatis 变量名,查看类型
查看内存
x/nfu 变量地址
n是查看内存单元个数
u是一个内存单元的大小,可用b字节,h双字,w四字节
f显示的格式,常用c显示字符,x十六进制
检查段错误的方法
- ulimit -c unlimited #将内核文件大小取消限制
- file core文件 #查看哪个可执行文件出错了
- gdb 可执行文件 core文件
makefile
- 画出文件的依赖关系
- 写makefile
- 简化makefile
- make命令生成项目
最笨的版本
简化规则:
1. $^代表所有依赖文件
2. $@代表目标文件
3. 隐式规则,生成.o文件自动去寻找同名.c文件进行编译,所以.o的目标都不用写。(%.o:%.c)
4. 可以创建变量替换依赖文件($obj)
- 也可以make + 目标,单独执行一个目标。例 make clean
伪目标:
.PHONY 为目标的语句一定会执行(不一定按顺序),例如
#为了生成多个可执行文件
.PHONY:all
#all目标要无条件执行
all:main hello
main:main.o
gcc $^ -o $@
hello:hello.o
gcc$^ -o $@
#所有.o文件依赖于.c文件,属于隐含规则可以不写
%.o:%.c
gcc -c $^ -o $@
clean:
rm -rf *.o