20155326 2017-2018-1 《信息安全系统设计基础》第2周学习及课堂总结myod
20155326 2017-2018-1 《信息安全系统设计基础》第1次学习及课堂总结myod
虚拟机之前出了一些问题,然后我重新弄了一个新的虚拟机。
先在虚拟机里面安装了git。
安完以后在终端用命令行建立了我的系统设计这门课的专用文件夹,里面包含src、res、lib等六个文件夹来存放我的代码。
将statistics脚本放在了文件夹下,以方便统计c代码行数。
在这些准备中我用到的命令行有:
ls 查看文件
cd 打开,进入
tab 补全目录
mkdir 新建文件夹
rm 删除文件夹
Ctrl+Shift+T 打开一个新的终端标签页
Ctrl+Shift+W 关闭一个终端标签
Ctrl+Shift+Q 关闭所有的的终端标签
一切准备就绪后我开始在终端开始用命令行写代码了。过程如下:
在终端输入 vi (文件名)helloworld.c
进入编辑页面后,按i进行编辑,代码敲完以后按Esc键退出编辑,并输入:wq,这样做是保存(w)、退出(q)。写代码时有关基本命令行有:若不小心输错了想要删除,则先按Esc,退出编辑模式,然后输入x(删除一个字符)、dd(删除一整行),然后按i或者s返回编辑模式。
代码写完后输入 gcc (文件名)helloworld.c -g -o(输出文件名)test 这样做的目的是编译和调试程序。gcc(文件名)helloworld.c 是编译,gcc (文件名)helloworld.c -o 是编译并输出,输入echo $? 看程序返回值,检测代码是否运行正确。
之后如果要对代码进行调试的话则输入 cgdb(输出文件名)test。调试过程是:按Esc,输入o,再按回车进入代码界面。若要在上面设置断点,则先按i(进入编辑模式),然后输入 b 5,在第五行设置断点,这是在界面下方在代码中设断点;在代码中直接设断点的方法是按Esc,然后按j或k调整断点位置(上移或者下移),确定端点放置位置后按空格可以看到设断点的那行代码前面的数字变红,即设置成功。
断点设置好后按r,运行代码,然后按n或者s进行调试,若代码中有变量想要知道变量此时的值,则可以输入 p (变量名)i ,或者display (变量名)i,后者可以持续显示变量值的变化情况。
若要退出调试,则按Esc、i、q即可退出。
与断点有关的知识有:
函数断点 b (函数名) 行断点 b (行号) 临时断点 tb (行号) ,输入n后执行完断点 条件断点 b (行号) if (条件) c (行号) 从某个断点到下一断点 p (变量名) 看某个变量的值;也可以 p (变量名)=(一个定值) 然后按 n 看下面有没有出错 f (函数名) 执行完函数 until 执行完循环 display (变量名) 可以一直显示某个变量的值
模拟计算机处理的过程:
gcc -E (文件名)helloworld.c -o (文件名)helloworld.i 编译预处理 vi (文件名)helloworld.i 汇编语言 gcc -S (文件名)helloworld.i -o (文件名)helloworld.s 编译 gcc -c (文件名)helloworld.s -o (文件名)helloworld.o 汇编成机器码 vi (文件名)helloworld.o 按Esc,在按:wq od -tc -tx (文件名)helloworld.o 二进制输出 objdump -d (文件名)helloworld.o 查看反汇编后汇编码 gcc (文件名)helloworld.o -o helloworld 将编译输出的.o 文件链接为最终可执行文件
小结
vi 编辑代码 gcc 编译运行 cgdb 调试
截图展示如下:
- 先在虚拟机里面安装了git。
安装完git以后我在我的码云中新建了一个项目,并将其克隆在了我的虚拟机里。
输入vi helloworld.c开始了代码的编辑
输入i 进入编辑模式,代码输入完毕后,按:wq退出。
退出后进行了编译,发现出现错误,询问同学后得知,需在main函数前加入int 否则报错。
gcc helloworld.c进行编译,之后ls显示出生成的a.out文件,绿色标识可执行文件,输入./helloworld运行.c文件。
用gcc进行了预处理、编译、汇编,gcc -E 少一个空格导致出错
- 以下为调试代码过程:
课堂测试总结如下
- 题目一
操作过程如下图:
- 题目二
操作过程如下:
- 题目三:
操作过程如下:
要注意for不能是一个空循环,在for循环下一行设断点才能不出错。
- 题目四:
操作过程如下:
静态库的知识的学习我参考的是http://www.cnblogs.com/jiqingwu/p/4325382.html
- 题目五:
操作过程如下:
共享库的知识的学习我参考的是http://blog.csdn.net/jackie__y/article/details/46805217
- 题目六
操作过程如下:
在输入的过程中要注意,使用tab键让他成为一个命令语句。在Makefile的学习过程中我学习的教程网址是http://blog.csdn.net/ruglcc/article/details/7814546/
- myod
操作过程如下:
由于要实现的内容我不太清楚,所以我去百度了一波,我需要实现的内容。
由此可知我要做的是,编写一个myod.c程序,使之输出其十六进制及ASCII码。
实现过程如下:
编写Makefile
小结
其实周二我花了一下午的时间一直在练习这周学习任务,但是可能还是掌握的不够熟练吧,加上偷懒没有安装vim,本来我打字就慢,加上不熟悉环境,老是打错,而修改又很麻烦,所以在老师说快一点要关闭活动一的时候,我还没把代码敲完,很遗憾这次没能把五个题目都做完,可是这五个题目也真的有点多了,对于我来说。感觉这周学到的知识还蛮多,接下来再接再厉吧!
20155326 2017-2018-1 《信息安全系统设计基础》第2周学习及课堂总结myod的更多相关文章
- 20165223《信息安全系统设计基础》第九周学习总结 & 第八周课上测试
目录 [第九周学习总结] 教材内容总结 [第八周课上测试] (一)求命令行传入整数参数的和 (二)练习Y86-64模拟器汇编 (三)基于socket实现daytime(13)服务器和客户端 参考资料 ...
- 2017-2018-1 20155326 《信息安全系统设计基础》第四周学习总结及myod改进版的补交
2017-2018-1 20155326 <信息安全系统设计基础>第四周学习总结及myod改进版的补交 学习内容 补充完成课上没有完成的内容 学习教材附录A,第十章内容 参考别出心裁的Li ...
- 2017-2018-1 20155305 《信息安全系统设计基础》第四周学习总结(课堂提交作业未来得及提交码云链接myod补充博客)
2017-2018-1 20155305 <信息安全系统设计基础>第四周学习总结(课堂提交作业未来得及提交码云链接myod补充博客) 课堂提交题目要求 编写MyOD.java 用java ...
- 2017-2018-1 20155318 《信息安全系统设计基础》第九周课下实践——实现mypwd
2017-2018-1 20155318 <信息安全系统设计基础>第九周课下实践--实现mypwd 相关知识 man -k 查找含有关键字的内容 与管道命令结合使用:man -k k1 | ...
- 2017-2018-3 20155337《信息安全系统设计基础》 pwd指令学习
2017-2018-3 20155337<信息安全系统设计基础> pwd指令学习 任务要求 学习pwd指令 研究pwd实现需要的系统调用(man -k:grep),写出伪代码 实现mypw ...
- 20155216 2017-2018-1 《信息安全系统设计基础》第二周课堂练习补交以及Myod的实现
20155216 2017-2018-1 <信息安全系统设计基础>第二周课堂练习补交 课堂测试3:行断点的设置 运行截图: 未完成原因:课前未安装 cgdb 具体步骤: 1.输入命令:gc ...
- 2017-2018-1 20155232 《信息安全系统设计基础》第四周学习总结以及课上myod练习补充博客
2017-2018-1 20155232 <信息安全系统设计基础>第四周学习总结以及课上myod练习补充博客 课上myod练习 1 参考教材第十章内容 2 用Linux IO相关系统调用编 ...
- 20155305《信息安全系统设计基础》10月18日课堂 fork,exic,wait
20155305<信息安全系统设计基础>10月18日课堂 fork,exic,wait fork()函数 1.fork函数作用 一般来讲, 我们编写1个普通的c程序, 运行这个程序直到程序 ...
- 2017-2018-1 20155320 《信息安全系统设计基础》第四周学习总结(课堂实践补交+myhead与mytail加分项目)
2017-2018-1 20155320 <信息安全系统设计基础>第四周学习总结(课堂实践补交+myhead与mytail实现) 课堂实践内容 1 参考教材第十章内容 2 用Linux I ...
- # 20155337 2017-2018-1 《信息安全系统设计基础》第二周课堂实践+myod
20155337 2017-2018-1 <信息安全系统设计基础>第二周课堂实践+myod 因为在课上已经提交了四个实验,还欠缺最后一个实验,反省一下自己还是操作不熟练,平时在课下应该多多 ...
随机推荐
- Lucene/Solr企业级搜索学习资源
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口.用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引:也可以通过Http GSol ...
- 3.Mysql支持的数据类型
3.Mysql支持的数据类型数据类型用来指定一定的存储格式.约束和有效范围.数据类型主要有:数值类型.字符串类型.日期和时间类型.3.1 数字类型类型名 字节数 有符号最小值 有符号最大值 无符号最小 ...
- Window10系统的安装
关于系统的安装网上有许多的教程,本文的教程并没有什么特别的.只是将自己在安装过程中遇到的问题记录下来,方便以后观看. 1.下载系统镜像 首先从MSDN上下载windows10镜像.在操作系统Windo ...
- PAT 1006 换个格式输出整数 (15)(C++&JAVA&Python)
1006 换个格式输出整数 (15)(15 分) 让我们用字母B来表示"百".字母S表示"十",用"12...n"来表示个位数字n(& ...
- python自学开始
95年工科女一枚 java工程师算不上,只能说从事java开发相关的工作,由于对Python有着极其浓厚的兴趣,一周时间了解大概之后,决定从今天开始见缝插针自学Python,为了防止本人三天打鱼两天晒 ...
- PyTorch 1.0 发布,JIT、全新的分布式库、C++ 前端
Python 张量与动态神经网络 PyTorch 1.0 发布了. 此版本的主要亮点包括 JIT 编译.全新并且更快的分布式库与 C++ 前端等. JIT 编译器 JIT(Just-In-Time)是 ...
- CH6901 骑士放置
原题链接 和棋盘覆盖(题解)差不多.. 同样对格子染色,显然日字的对角格子是不同色,直接在对应节点连边,然后就是二分图最大独立集问题. #include<cstdio> #include& ...
- 在nodejs里面是用类似配置文件的方法
1.a.js exports.MYSQLIP = '127.0.0.1'; exports.MYSQLPORT = 1336; 2.b.js const C = require('./config/c ...
- Java的OOP三大特征之一——封装
面向对象三大特征之一 封装 继承 多态 封装性就是把类(对象)的属性和行为结合成一个独立的相同单位,并尽可能隐蔽类(对象)的内部细节,对外形成一个边界,只保留有限的对外接口使之与外部发生联系. ...
- APM浅析
APM(Application Performance Management & Monitoring)一种基于云的性能监控服务(SaaS),以非侵入式监听探针,收集应用关键指标,生成分析报表 ...