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 因为在课上已经提交了四个实验,还欠缺最后一个实验,反省一下自己还是操作不熟练,平时在课下应该多多 ...
随机推荐
- python3.5.2中文字符乱码问题解决
>>> str = "世界你好!" >>> b = str.encode('utf-8') >>> type(b) <c ...
- Event 事件
事件是建立在委托的基础之上的. http://www.cnblogs.com/lystory/p/5085786.html public class 事件参数 { public 事件参数(string ...
- JQuery Deferred 对象
http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html <jQu ...
- Windows下war包部署到Linux下Tomcat出现的问题
最近,将Windows下开发的war包部署到Linux下的Tomcat时报了一个错误:tomcat error in opening zip file.按理说,如果正常,当把war包复制到webapp ...
- Vim中如何使用正则进行搜索
#set magic这句的作用在于将vim的正则打开. 这样就可以搜索了. 至于正则的相关的内容.在此抄一份.以免于下次自己还要去百度. 符号 匹配 . (dot) 任意单一字符 \d 任意一位数字 ...
- Python数据库工具类MySQLdb使用
MySQLdb模块用于连接mysql数据库. 基本操作 # -*- coding: utf-8 -*- #mysqldb import time, MySQLdb ...
- 设计师都爱用的UI标注软件有哪些?
UI标注软件现在是设计师(UI.PM.前端等)必备的一款软件.设计稿是UI设计师日常工作中的产出物之一,当然,做出了高保真设计稿并不意味着你的工作结束了,因为你还得与下游的开发工程师进行对接. 我们经 ...
- vc项目中加载多个lib遇到的问题
一个VC项目中 在网络加密 json解析等方面 加载了多个第三方库和文件 boost cryptpp rapidjson mysql的连接池等等 在使用mysql++的时候 多次报错 LNK 20 ...
- Python 使用for...in...和 while 循环 实现8种格式的 九九乘法表
#九九乘法表 for...in .. #左下角 for i in range(1,10): for j in range(1,i+1): print(' %d×%d=%2d'%(j,i,i*j), e ...
- 【Redis】Redis-benchmark测试Redis性能
Redis-benchmark是官方自带的Redis性能测试工具,可以有效的测试Redis服务的性能. 使用说明如下: Usage: redis-benchmark [-h <host>] ...