2018-2019-1 20165325 《信息安全系统设计基础》第一周学习总结

2018-2019-1 20165325 《信息安全系统设计基础》第一周学习总结

一、学习笔记

1. vim简单用法
  • i:在光标处插入
  • I:在行首插入
  • a:在光标下一个字符处插入
  • A:在行尾插入
  • esc:切换到正常模式
  • shift+zz:保存退出
  • :w 退出
  • :q 退出
  • :wq 保存并退出

参考链接

2. 预处理、编译、汇编
  • 预处理主要是C语言编译器对各种预处理命令进行处理,包括头文件的包含、宏定义的扩展、条件编译的选择等;执行hello.c的预处理:gcc -E hello.c -o hello.i
  • 编译把源代码翻译成中间语言,即汇编语言;执行hello.i的编译:gcc -S hello.i -o hello.s
  • 汇编把汇编代码翻译成了机器代码,即目标代码;执行hello.s的汇编:gcc -c hello.s -o hello.o

参考链接(1)

参考链接(2)

3. Linux命令复习
  • 删除文件 temp.o :rm temp.o
  • 删除文件夹/目录 temp :rm -rf temp

二、班课作业

1、测试1 -vi
作业要求
  1. 每个.c一个文件,每个.h一个文件,文件名中最好有自己的学号
  2. 用Vi输入图中代码,并用gcc编译通过
  3. 在Vi中使用K查找printf的帮助文档
  4. 提交vi编辑过程截图,要全屏,包含自己的学号信息
  5. 把代码推送到代码托管平台

我的解答

1.用vi编辑代码如图所示:

2.vi中使用K查找printf的帮助文档(用光标指在printf行,键盘单击K,查找printf的帮助文档),如图所示:

3.运行结果如图所示(输入2016 5325):

码云链接:https://gitee.com/maxeyscodes/IS_20165325

2、测试2-gcc测试
作业要求
  1. 用gcc 进行预处理,编译,汇编,链接vi输入的代码
  2. 生成的可执行文件中要有自己的学号
  3. 提交预处理,编译,汇编,链接,运行过程截图,要全屏,包含自己的学号信息
  4. 代码推送到代码托管平台

我的解答

vi输入的代码如图所示;

预处理,编译,汇编,运行过程截图如图所示;

码云链接:https://gitee.com/maxeyscodes/IS_20165325

3、测试3-gdb测试
作业要求
  1. 用gcc -g编译vi输入的代码;
  2. 在main函数中设置一个行断点;
  3. 在main函数增加一个空循环,循环次数为自己学号后4位,设置一个约为学号一半的条件断点;
  4. 提交调试过程截图(一定包含条件断点的),要全屏,包含自己的学号信息;
  5. 代码推送到代码托管平台;

我的解答

第一个行断点设置在行5,条件断点在行8,stop only if i==2600;
代码截图如图所示:

调试截图如图所示:

码云链接:https://gitee.com/maxeyscodes/IS_20165325

4、测试4-静态库的测试
作业要求
  1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?
  2. 提交静态库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
  3. 代码推送到代码托管平台;

我的解答

调用mymath.a静态库如图所示:

生成mymath.a静态库截图如图所示:

码云链接:https://gitee.com/maxeyscodes/IS_20165325/tree/master/

5、测试5-共享库
作业要求
  1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so?
  2. 提交共享库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息;
  3. 代码推送到代码托管平台;

我的解答

生成及调用过程如图所示;

码云链接:https://gitee.com/maxeyscodes/IS_20165325/tree/master/

6、测试6-Makefile
作业要求
  1. 写出编译上面vi编辑代码的makefile,编译出来的目标文件为testmymath, 只用显式规则就可以.

  2. 提交Make过程截图,要全屏,包含自己的学号信息

  3. 代码推送到代码托管平台;

我的解答

make过程截图如图所示;

makefile代码如图所示;

码云链接:https://gitee.com/maxeyscodes/IS_20165325/tree/master/

三、问题日志

1、条件断点调试

参考链接(1)

参考链接(2)

问题描述

GDB调试过程中遇到条件断点无法停下。

问题分析

条件断点的设置为:

break 8 if i==2600 //在第八行,stop only if i==2600

第八行代码为:

for (i = 0;i < 5325;i++){
解决方案

怀疑是该行i的复杂变动影响了断点正常工作,修改为:

for (i = 0;
    i < 5325;
    i++){

断点设置在i<5325处,能正常运行;

疑点

其他同学好像,没有遇到这种问题,另外网上的博客也没有出现这种问题,原因暂未深究。

posted @ 2018-09-19 16:39  Maxeys  阅读(301)  评论(2编辑  收藏  举报