• 20175212童皓桢 《信息安全系统设计基础》第3周学习总结


    20175212 《信息安全系统设计基础》第3周学习总结

    教材学习内容总结

    一、熟悉Linux系统下的开发环境

    二、熟悉vi的基本操作

    三、熟悉gcc编译器的基本原理

    1.命令格式gcc [选项 ] [文件名]
    -E: 仅执行编译预处理
    -S:将C代码转换为汇编源码
    -c:仅执行编译,不执行连接
    (以上为正常编译步骤)
    -o:指定生成的输出文件
    -I:指定头文件目录
    -I:指定程序要链接的库
    -L:指定库文件所在的目录名

    四、熟练使用gcc编译器的常用选项

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    五、熟练使用gdb调试技术

    • gdb programm(启动GDB)
    • b 设断点(要会设4种断点:行断点、函数断点、条件断点、临时断点)
    • run 开始运行程序
    • bt 打印函数调用堆栈
    • p 查看变量值
    • c 从当前断点继续运行到下一个断点
    • n 单步运行
    • s 单步运行
    • quit 退出GDB

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    六、熟悉makefile基本原理及语法规范

    一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
    1.makefile

    testmymath: main.o add.o sub.o mul.o div.o 
    gcc main.o add.o sub.o mul.o div.o -o testmymath
    

    2.编译makefile,得到目标文件testmymath

     testmymath: main.o add.o sub.o mul.o div.o 
        gcc main.o add.o sub.o mul.o div.o -o testmymath
        main.o: main.c head.h
        gcc -c main.c
        add.o: add.c head.h
        gcc -c add.c
        sub.o: sub.c head.h
        gcc -c sub.c
        mul.o: mul.c head.h
        gcc -c mul.c
        div.o: div.c head.h
        gcc -c div.c
    

    在这里插入图片描述

    七、掌握静态库和动态库的生成与调用方法

    八、理解C程序中模块的概仿,模块分解的“高内聚,低耦合”的原则

    九、了解链接的概念

    教材学习中的问题和解决过程

    • 问题1:教材中有提到:GDB的n(next)命令让GDB执行下一行,然后暂停。 s(step)命令的作用与此类似,只是在函数调用时step命令会进入函数,那么实际使用中应该优先选用哪个?
    • 问题1解决方案:经过类比以前C和Java的学习得知,应优先使用next。step 就是单步执行,遇到子函数就进入并且继续单步执行;在其他调试其中相当于step-into命令,作用是移动到下一个可执行的代码行。如果当前行是一个函数调用,则调试器进入函数并停止在函数体的第一行。step可以帮助初步揭开代码位置的谜团,例如:函数调用和函数本身可能在不同的文件中。next 是在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步。在其他调试器中相当于step-over,作用是在同一个调用栈层中移动到下一个可执行的代码行。调试器不会进入函数体。如果当前行是函数的最后一行,则,next将进入下一个栈层,并在调用函数的下一行停止

    代码调试中的问题和解决过程

    • 问题1:提示找不到头文件在这里插入图片描述

    • 问题1解决方案:之前按教材指导将head.h放在另外创建的include文件夹中,导致直接编译时无法找到。在src中拷贝一份即可编译。

    代码托管

    在这里插入图片描述

    上周考试错题总结

    其他(感悟、思考等,可选)

    xxx
    xxx

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 53/53 1/1 20/20

    尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
    耗时估计的公式
    :Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。

    参考:软件工程软件的估计为什么这么难软件工程 估计方法

    • 计划学习时间:XX小时

    • 实际学习时间:XX小时

    • 改进情况:

    (有空多看看现代软件工程 课件
    软件工程师能力自我评价表
    )

    参考资料

  • 相关阅读:
    VFP获取 SQL Server 的数据表、触发器、存储过程、视图等脚本
    VFP控制Excel操作集
    MS SqlServer 的日期格式化函数 Convert
    VFP 图形文件与剪切板互换的API解决方法
    VFP中OCX控件注册检测及自动注册
    VFP检测SQL Server的五个实例代码
    缓存方案笔记
    windows访问控制列表 --ACL(Access Control List)
    cnblog排版
    GIT常用命令
  • 原文地址:https://www.cnblogs.com/thz666/p/11568977.html
Copyright © 2020-2023  润新知