《信息安全系统设计基础》第2周学习总结
20145336张子扬 《信息安全系统设计基础》第2周学习总结
教材学习内容总结
学习目标
- 熟悉Linux系统下的开发环境
- 熟悉vi的基本操作
- 熟悉gcc编译器的基本原理
- 熟练使用gcc编译器的常用选项 5 .熟练使用gdb调试技术
- 熟悉makefile基本原理及语法规范
- 掌握静态库和动态库的生成
vim
命令行模式 (command mode):控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。
插入模式(Insert mode):只有在 Insert mode 下,才可以做文字输入,按「ESC」键可回到命令行模式。
vim相关快捷键
- k、j、h、l 功能分别上、下、左、右
- w 在指定行内右移光标,到下一个字的开头
- e 在指定行内右移光标,到一个字的末尾
- b 在指定行内左移光标,到前一个字的开头
- 0 数字0,左移光标,到本行的开头
- G 光标移动到文章的最后
- M 将光标移到屏幕的中间(Middle)
- L 将光标移到屏幕的最下行(Lowest)
- H 将光标移到屏幕的最上行(Highest)
- nH 将光标移到屏幕的第 n 行(如 2H: 将光标移到屏幕的第 2 行)
- nL 将光标移到屏幕的倒数第 n 行(如 3L:将光标移到屏幕的倒数第 3 行)
- nG 光标移动到文章的第 n行(如8G:移动到文章的第 8行)
- x 删除光标所在位置后面的一个字符,同delete
- d+空格 删除光标所在位置的字符
- dd 删除整行
- dw 删除一个单词(不适用中文)
- d$或D 删除至行尾
- d^ 删除至行首
- dG 删除到文档结尾处
- d1G删至文档首部
- Ctrl+b 在文件中向上移动一页(相当于 PageUp 键)
- Ctrl+f 在文件中向下移动一页(相当于 PageDown 键)
- ctrl+u 屏幕往后移动半页
- ctrl+d 屏幕往前移动半页
- u 撤消前一条命令的结果
- p 小写字母 p,将缓冲区的内容粘贴到光标的后面
- yy 复制当前行到内存缓冲区
- i 在光标左侧输入正文
- a 在光标后插入编辑
- w 保存文档
- q! 强制退出,不保存
- q 退出
- [[ 转到上一个位于第一列的"{"
- ]] 转到下一个位于第一列的"{"
- { 转到上一个空行
- } 转到下一个空行
使用vim进行c语言的编写
gcc
我们可以把编译过程分成四步:
- 预处理:gcc –E hello.c –o hello.i;gcc –E调用cpp
- 编 译:gcc –S hello.i –o hello.s;gcc –S调用ccl
- 汇 编:gcc –c hello.s –o hello.o;gcc -c 调用as
- 链 接:gcc hello.o –o hello ;gcc -o 调用ld
gdb
GDB最基本的命令
- gdb programm(启动GDB)
- b 设断点(要会设4种断点:行断点、函数断点、条件断点、临时断点)
- run 开始运行程序
- bt 打印函数调用堆栈
- p 查看变量值
- c 从当前断点继续运行到下一个断点
- n 单步运行
- s 单步运行
- quit 退出GDB
问题:GDB的n(next)命令让GDB执行下一行,然后暂停。 s(step)命令的作用与此类似,只是在函数调用时step命令会进入函数,那么实际使用中应该优先选用哪个?为什么?
在网上查阅了相关资料,在函数调用时step会进入函数,next导致下一次暂停出现在调用函数之后。next被称为单步越过函数,而step被称为单步进入函数。单步跳入碰到函数调用,就展开跟进调试。单步跳过碰到函数调用,就跳过去,并不展开函数,也就是说不会再调用的函数里中断。所以我觉得应该使用step命令
教材学习中的问题和解决过程
在使用vimtutor中还是不太习惯使用hjkl键,对于快捷键的掌握一开始也不太娴熟,每次在使用vim时经常会去查表,渐渐的就能够熟练地掌握一些快捷键的运用,还需要多加练习。
在学习vimtutor的过程中,发现打不开命令模式。每次打开vimtutor却不能使用q!退出只能关掉程序重新进。
在使用linux中用vim编写代码时,虚拟机死机了!然后我就强行关闭重新进了,还是打不开,再重启电脑之后,重新打开linux虚拟机,发现之前码的代码都没有了。
代码调试中的问题和解决过程
对于helloworld程序在vim中进行编译并进行了运行
本周代码托管截图
其他(感悟、思考等,可选)
上周主要了解了linux环境,学习了如何使用linux系统。本周主要使用vimtutor和一些教程来掌握vim的使用方法,我感觉vim和五笔输入法一样,比较不容易掌握,但学会了是一个非常实用工具。使用vim编写c程序,使用gcc进行编译,使用gdb进行调试代码。本周的学习重点就是掌握vim的使用方法,掌握vim的最好途径就是练习,在练习中熟悉vim。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | ||
---|---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | ||
第一周 | / | 1/2 | 19/20 | ||
第二周 | 80/80 | 1/3 | 25/44 |