2018-2019 20165235 《信息安全系统设计基础》第一周
测试1-vi
- 每个.c一个文件,每个.h一个文件,文件名中最好有自己的学号
- 用Vi输入图中代码,并用gcc编译通过
- 在Vi中使用K查找
printf
的帮助文档 - 提交vi编辑过程截图,要全屏,包含自己的学号信息
这是编写好的文件以及文件夹目录:
这是vi中的printf帮助文档,首先cd src/main.c 通过hjkl键将光标移动到printf上去,按大写的K即可:
这是编译.c文件以及运行结果:
测试2-gcc测试
- 用
gcc
进行预处理,编译,汇编,链接vi
输入的代码 - 生成的可执行文件中要有自己的学号
- 提交预处理,编译,汇编,链接,运行过程截图,要全屏,包含自己的学号信息
预处理:gcc -E -I include src/*.c -o bin/*.i
编译:gcc -S -I include bin/*.i -o bin/*.s
汇编:gcc -c -I include bin/*.s -o bin/*.o
链接:cd bin
gcc *.o -o test
使用到的命令
1.gcc -E .c -o .i
编译预处理
2.gcc -S .i -o .s
产生汇编代码
3.gcc -c .s -o .o
进行汇编
4.gcc * .o -o XXX
生成可执行文件
5.ls
显示文件列表
测试3-gdb测试
- 用gcc -g编译vi输入的代码
- 在main函数中设置一个行断点
- 在main函数增加一个空循环,循环次数为自己学号后4位,设置一个约为学号一半的条件断点
- 提交调试过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
首先要gcc -g
来生成一个可执行文件,打开gdb调试,然后设置行断点 b 9(第九行)
输入r开始调试:
设置条件断点:
gdb相关命令
1.set args
可指定运行时参数。(如:set args 10 20 30 40 50 )
2.show args
命令可以查看设置好的运行参数。
3.run (r)
启动程序。
4.pwd
显示当前的所在目录。
5.break
设置断点,可以简写为b
6.b X
(整数) 设置断点,在源程序第X行
7.b func
设置断点,在func函数入口处
8.info b
查询所有断点
9.b X(整数) if i==X
设置条件断电,在for循环后一行设置。
测试4-静态库的测试
- 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?
- 提交静态库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
加上-g将.c文件编译成.o文件,输入图上指令生成一个mymath.a
的静态库文件,然后用mymath.a
文件生成一个可执行文件test
对可执行文件的调试:
测试5-共享库
- 除了
main.c
外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so? - 提交共享库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
输入图上代码生成一个共享库文件,并用共享库文件生成一个可执行文件:
对可执行文件的调试:
测试6-Makefile
1 写出编译上面vi编辑代码的makefile,编译出来的目标文件为testmymath, 只用显式规则就可以.
2 提交Make过程截图,要全屏,包含自己的学号信息
首先 vim Makefile:(第二行开头使用Tab键)
然后在shell中输入make
运行生成的目标文件: