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的更多相关文章

  1. 20165223《信息安全系统设计基础》第九周学习总结 & 第八周课上测试

    目录 [第九周学习总结] 教材内容总结 [第八周课上测试] (一)求命令行传入整数参数的和 (二)练习Y86-64模拟器汇编 (三)基于socket实现daytime(13)服务器和客户端 参考资料 ...

  2. 2017-2018-1 20155326 《信息安全系统设计基础》第四周学习总结及myod改进版的补交

    2017-2018-1 20155326 <信息安全系统设计基础>第四周学习总结及myod改进版的补交 学习内容 补充完成课上没有完成的内容 学习教材附录A,第十章内容 参考别出心裁的Li ...

  3. 2017-2018-1 20155305 《信息安全系统设计基础》第四周学习总结(课堂提交作业未来得及提交码云链接myod补充博客)

    2017-2018-1 20155305 <信息安全系统设计基础>第四周学习总结(课堂提交作业未来得及提交码云链接myod补充博客) 课堂提交题目要求 编写MyOD.java 用java ...

  4. 2017-2018-1 20155318 《信息安全系统设计基础》第九周课下实践——实现mypwd

    2017-2018-1 20155318 <信息安全系统设计基础>第九周课下实践--实现mypwd 相关知识 man -k 查找含有关键字的内容 与管道命令结合使用:man -k k1 | ...

  5. 2017-2018-3 20155337《信息安全系统设计基础》 pwd指令学习

    2017-2018-3 20155337<信息安全系统设计基础> pwd指令学习 任务要求 学习pwd指令 研究pwd实现需要的系统调用(man -k:grep),写出伪代码 实现mypw ...

  6. 20155216 2017-2018-1 《信息安全系统设计基础》第二周课堂练习补交以及Myod的实现

    20155216 2017-2018-1 <信息安全系统设计基础>第二周课堂练习补交 课堂测试3:行断点的设置 运行截图: 未完成原因:课前未安装 cgdb 具体步骤: 1.输入命令:gc ...

  7. 2017-2018-1 20155232 《信息安全系统设计基础》第四周学习总结以及课上myod练习补充博客

    2017-2018-1 20155232 <信息安全系统设计基础>第四周学习总结以及课上myod练习补充博客 课上myod练习 1 参考教材第十章内容 2 用Linux IO相关系统调用编 ...

  8. 20155305《信息安全系统设计基础》10月18日课堂 fork,exic,wait

    20155305<信息安全系统设计基础>10月18日课堂 fork,exic,wait fork()函数 1.fork函数作用 一般来讲, 我们编写1个普通的c程序, 运行这个程序直到程序 ...

  9. 2017-2018-1 20155320 《信息安全系统设计基础》第四周学习总结(课堂实践补交+myhead与mytail加分项目)

    2017-2018-1 20155320 <信息安全系统设计基础>第四周学习总结(课堂实践补交+myhead与mytail实现) 课堂实践内容 1 参考教材第十章内容 2 用Linux I ...

  10. # 20155337 2017-2018-1 《信息安全系统设计基础》第二周课堂实践+myod

    20155337 2017-2018-1 <信息安全系统设计基础>第二周课堂实践+myod 因为在课上已经提交了四个实验,还欠缺最后一个实验,反省一下自己还是操作不熟练,平时在课下应该多多 ...

随机推荐

  1. Materix3*3

    ][],][],][]) { ;i<;i++) { ;j<;j++) { res[i][j]= aa[i][] * bb[][j] + aa[i][] *bb[][j] + aa[i][] ...

  2. 4A - 排序

    输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数 ...

  3. 转 java反射详解

    本篇文章依旧采用小例子来说明,因为我始终觉的,案例驱动是最好的,要不然只看理论的话,看了也不懂,不过建议大家在看完文章之后,在回过头去看看理论,会有更好的理解. 下面开始正文. [案例1]通过一个对象 ...

  4. MySql5.5 SQL优化 慢查询日志存储

    一.MySql的慢查询日志的开启和存储 1.查看是否把没有使用索引的SQL记录到慢查询日志中,查看 log_queries_not_using_indexes 变量; show VARIABLES L ...

  5. (O)js核心:作用域链

    作用域 在一个函数被调用的时候,函数的作用域才会存在.此时,在函数还没有开始执行的时候,开始创建函数的作用域:   函数作用域的创建步骤: 1.函数形参的声明. 2.函数变量的声明. 3.普通变量的声 ...

  6. Mac OS 10.12 - 在VMwear Workstation12.5.2中以两种方式进入恢复模式(Recovery)!!!

    注意:如果你打算安装Mac OS10.12 到虚拟机里面学习,那么我强烈建议你在没有安装任何其它软件之前,按照我这篇博客来进入恢复模式(Recovery),禁用Rootless机制!!!这样处理后,你 ...

  7. samtools

    samtools 用法 samtools <command> [options] command 见以下列表, 每个 command 的 options 也不同 dict faidx in ...

  8. hbase 单机版安装

    1.安装jdk参见http://www.cnblogs.com/lvlv/p/4337863.html 安装路径:/usr/java/jdk1.7.0_79 2.下载hbase   http://mi ...

  9. mybatis学习三 数据库连接池技术

    1.在内存中开辟一块空间,存放多个数据库连接对象.就是Connection的多个实例2. 连接池技术有很多,c3p0,dbcp,druid,以及JDBC Tomcat Pool, JDBC Tomca ...

  10. unity实现一个物体绕着某点旋转

    transform.RotateAround(o.transform.position,Vector3.up,20*Time.deltaTime);transform.Rotate(Vector3.u ...