20145325张梓靖 《信息安全系统设计基础》第2周学习总结
教材学习内容总结
-
vim :set nu 显示行号;:set ai 自动缩行;:set ts=4 设置一个 TAB 键等于几个空格
移动光标: [[ 转到上一个位于第一列的"{";]] 转到下一个位于第一列的"{";{ 转到上一个空行;} 转到下一个空行;gd 转到当前光标所指的局部变量的定义
光标前面插入(i),光标后面添加(a)
-
gcc 注意使用GCC编译时要加“-g”参数。
-
gdb
b
设断点(要会设4种断点:行断点、函数断点、条件断点、临时断点)
run
开始运行程序
bt
打印函数调用堆栈
p
查看变量值
c
从当前断点继续运行到下一个断点
n
单步运行
s
单步运行
quit
退出GDB
- 静态库、动态库
静态链接库的生成:ar rcsv libxxx.a xxx.o
静态库的使用: gcc -o main main.c -L. -lxxx
注意-L -l 的含义
共享库的生成 gcc -fPIC -c xxx.c
gcc -shared -o libxxx.so xxx.o
共享库的使用:gcc -o main main.c -L. -lxxx
- makefile
格式:目标文件:依赖文件 (Tab或;)命令
规则:显式规则、隐式规则、模式规则
代码调试中的问题和解决过程
- 问题将练习代码输入完成,在终端输入
gcc *.c -o main
进行编译,出现如下错误:
-
解决查找到的原因:
出现 在非结构或联合中请求成员 错误的原因一般可分为两种:
1、在函数中,在访问结构体或联合体内的成员变量时,发现访问的变量类型并非是一个结构体或联合体,如
char *test;
test.test或test->test都会出现这种错误2、最常见的,使用结构体定义了一个指针,却使用 . 来访问,这种情况应该使用 -> 来访问,如
typedef struct Test{ char test[10]; } Test *test; printf("%s",test.test);//错误 printf("%s",test->test);//正确
-
可是再次检查代码,并没有发现这方面的问题,试了试将变量b改成用字母c表示时,很奇怪,这个错误消失了,但有了另外的问题
- 先将
div.c
代码内容改改试试
- 不行,再改
- 好,全将double改为int,问题没了(先不管代码了,主要运用一下其他的操作),下个问题继续解决
- 在 “main.c“文件中加入头文件
#include <stdio.h>
#include <stdlib.h>
- 警告的问题解决了,又有新问题了
-
查了下,都是说的可能是没加地址符号,但“div_t”什么意思啊?
-
暂时将有关div的函数运用忽略掉,先联系gcc、gdb等
-
问题 怎么进入下一步命令啊
- 解决 依旧使用 中断信号Ctrl+C
- 问题 调试时当到scanf时,出入数据后回车无法回到命令行,怎么回事?
- 解决 暂时没有解决,是因为代码有问题?
本周代码托管截图
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 3500行 | 25篇 | 300小时 | |
第一周 | 70/70 | 2/2 | 22/22 | |
第二周 | 150/220 | 1/3 | 23/23 |