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

学习任务

复习Linux命令,特别是man -k, cheat, grep -nr xxx /usr/include

复习vi, gcc, gdb,make的使用

复习教材内容ch01 ch02 ch03 ch04 ch06 ch07

man

Linux中查找配置(configure)网卡(interface)的命令是(man –k configure | grep interface )

没有内建与外部命令的区分,不太紧急的时候就可以用 man 这种详细描述的查询方式

在 man 手册中一共有这么几个章节

章节数 说明

1 Standard commands (标准命令)

2 System calls (系统调用)

3 Library functions (库函数)

4 Special devices (设备说明)

5 File formats (文件格式)

6 Games and toys (游戏和娱乐)

7 Miscellaneous (杂项)

8 Administrative Commands (管理员命令)

9 其他(Linux特定的), 用来存放内核例行程序的文档。

cheat

Linux Bash中,(cheat find )命令可以查年find命令的使用示例。

grep -nr xxx /usr/include

查找宏 STDOUTFILENO 的值的命令是(grep -nr STDOUTFILENO /usr/include)

使用grep查找当前目录下.c中main函数在那个文件中的命令是( grep main .c )

gdb

gdb中使用命令( break main 或 b main ) 设置main函数断点。

gdb中使用命令( until ) 可以跳出循环语句。

gdb中next和step都可以单步跟踪,根据自顶向下原则应该优先选用next.

GDB中以16进制形式打印%eax中内容的命令是(print /x $eax)

gcc

GCC中INFINITY表示(无穷大)。

gcc –c hello.c 产生的hello.o是可重定位目标文件。

GCC编译程序的过程分为(预处理、编译、汇编、链接)四个阶段。

程序编码:

假设一个c程序,有两个文件p1.c和p2.c。我们用unix命令编译这些的代码如下

unix> gcc -o1 -c p p1.c p2.c

"gcc"指的是GCC C编译器,将源代码转换成可执行代码。 “-o1”告诉编译器使用第一级优化。

在命令行上使用“-s”选项,就能得到c语言编译器的汇编代码c:

unix> gcc -o1 -s code.c

在命令行上使用“-c”选项,GCC会编译并汇编该代码:

unix> gcc -o1 -c code.c

反汇编器,程序根据目标代码产生一种类似于汇编代码的格式:

unix> objdump -d code.o

生成可执行文件prog:

unix> gcc -O1 -o prog code.o main.c

我们用下面的命令来启动GDB:

unix> gdb prog

我们可以以各种方式查看哥哥寄存器和存储器位置

编辑器(vi)

一·完成对所录入文字的编辑功能,最常用的是vi(vim)和emacs

二·vi的三种模式及用法

1.命令行模式:最初进入的默认模式,可上下移动光标进行删除字符或整行删除,也可进行复制粘贴,但无法编辑。

2.插入模式:可以编辑,按[Esc]键回到命令行模式。

3.底行模式:可以进行保存或退出,或设置编辑环境。

三·vim教程总结

:q!会舍弃所做的任何改动;

按下A以启用编辑,按下esc退出;

光标放在欲删除的单词处,按下dw可以删除单词;c$可以删除到行末;输入d$,删除从当前光标到文末;数字+dd,删除几行;

w,表示向前移动几个单词(不含该单词),而e表示移动到前面第几个单词(含本词);

按下p将最后一次删除的内容插入到光标所在位置的上方;

输入r和一个字符,替换光标所在位置的字符;

输入cw或者ce之后,可以改变单词直到单词末尾(ce是把光标所在的位置上的单词也删除);

Ctrl +g可以查询当前行,用G跳到文末或者gg跳到文首之后,输入行号+G就可以返回;

/后输入字符即可查找,按下n进行下一次查找;光标放在某{,(,[处,按下%可以查找配对的另一半乎可以输;

:s/old/new/g可以将整行中的单词进行替换;:%s/old/new/g可以将整个文档中的单词进行替换;

:!后加上外部命令,即在vim中执行外部命令; 按下v后,就可以选中部分文本了;:r FILENAME就可将文本内容粘贴到光标方;

输入大写的O,将在光标上方打开一行并进入插入模式,输入小写的o,将在光标下方打开一行并进入插入模式;

输入a可在光标之后插入;按下R后,就可以连续替换多个字符;按下v后,可以在高光状态下选中文本,然后按下y复制,按下p粘贴;也可以直接在正常状态下按yw选中一个单词;在:set hls is之后,输入/单词 可以显示出文件中所有的待查找单词;

:set ic之后,则不区分查找的大小写;

按下tab键可以补全文件名。

编译链接器(gcc)

指源代码转化成生成可执行代码的过程,最常用的编译器是gcc。

gcc的编译流程

预处理阶段:头文件和宏定义,—E可以让gcc在预处理结束之后停止编译过程,因此可以看到预处理的过程。

一般格式为:gcc [选项] 要编译的文件 [选项] 目标文件 gcc -E hello.c -o hello.i

编译阶段:gcc将代码翻译成汇编语言,使用选项-S只进行编译而不进行汇编,结果生成汇编代码。gcc -S hello.i -o hello.s

汇编阶段:将.s文件转成目标文件,使用选项-c可以看到汇编代码转换为二进制目标代码。gcc -c hello.s -o hello.o

链接阶段:默认搜索链接到libc.so.6函数库当中,调用库文件中已经实现的函数。

gcc编译选项分析:常用选项 -I dir :在头文件的搜索路径列表中添加dir目录,当用户希望添加放置在非默认位置的头文件时可以通过该选项来指定。

用gcc编译

编译链接器(gdb)

一·gdb调试器,可方便的设置断点、单步跟踪。

二·gdb的使用流程

1.查看文件:键入l(list)查看所载入的文件。

2.设置断点:

按行设置断点:b+对应行号即可,可设置多个断点,运行到设置断点的一行程序会自动停止。

函数断点:按函数设置断点只需把函数名列在命令“b”之后。

条件断点:b 行数或函数名 if 表达式。

3.查看断点情况:info b,在断点键入bt可查到调用函数(堆栈)的情况。

4.运行代码:r+行号可从指定行开始运行代码,默认从头执行。

5.查看变量值:p+变量值即可。

6.单步运行。

7.恢复程序运行。

vim的使用技巧

打开终端输入 vim + 你想要打开的文件名(可以不存在)

按Esc进入普通模式

使用方向键或者h(左),j(下),k(上),l(右)键可以移动光标

插入:i 在当前光标处插入 I 在行首插入 A 在行末插入 a 在光标后插入编辑 o 在当前行后插入一个新行 O 在当前行前插入一个新行 cw 替换从光标所在位置后到一个单词结尾的字符

保存与退出:(:wq 保存并退出) (:q 退出) (:q! 强制退出,不保存) (:wq! 强制保存并退出)

删除:x 删除游标所在的字符 X 删除游标所在前一个字符 dd 删除整行 dw 从当前光标删除至下一个单词 d$ 从当前光标删除至行尾 2dd 删除2行

撤销:u 撤销以前操作 U 撤销在一行中所做改动 Ctrl+R 撤销以前撤销的命令

% 光标移到到相应匹配的括号

进入命令行模式下对shiftwidth值进行设置可以控制缩进和回退的字符数

如何调整文本位置:1、:ce(center)命令使本行内容居中 2、:ri(right)命令使本行文本靠右 3、:le(left)命令使本行内容靠左!可执行外部shell命令

原文地址:https://www.cnblogs.com/dj20145339/p/6035871.html