20145325张梓靖 《信息安全系统设计基础》第2周学习总结

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

参考资料

posted @ 2016-09-25 22:40  20145325张梓靖  阅读(210)  评论(4编辑  收藏  举报