《信息安全系统设计基础》第2周学习总结

20145336张子扬 《信息安全系统设计基础》第2周学习总结

教材学习内容总结

学习目标

  1. 熟悉Linux系统下的开发环境
  2. 熟悉vi的基本操作
  3. 熟悉gcc编译器的基本原理
  4. 熟练使用gcc编译器的常用选项 5 .熟练使用gdb调试技术
  5. 熟悉makefile基本原理及语法规范
  6. 掌握静态库和动态库的生成

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  

参考资料

posted @ 2016-09-25 23:58  20145336张子扬  阅读(124)  评论(5编辑  收藏  举报