zoukankan      html  css  js  c++  java
  • 2019-2020-1 20175325 《信息安全系统设计基础》第1周学习总结

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

    一、目录:

    • 学习内容
    • 代码调试中的问题和解决过程
    • 感想
    • PSP

    二、学习内容:

    • 计算机:硬件+系统软件
    • 系统得硬件组成:
      • 总线,携带信息字节并负责在各个部件传递
      • I/O设备,系统与外部世界的联系通道
      • 主存:临时存储设备,用来存放程序处理的数据
      • 处理器:解释和执行村塾在主存中指令的引擎
    • 编译器gcc:
      • 命令格式: gcc+选项+文件名

    -E:仅执行编译预处理
    -S:将C代码转换成汇编代码
    -c:仅执行编译操作,不进行链接
    -o:指定生成输出文件
    -I:指定头文件目录
    -l:指定程序需链接的库
    -L:指定库文件所在的目录名

    • 编译过程:

      • 预处理:gcc -E hello.c -o hello.i
      • 汇编:gcc -S hello.i -o hello.s
      • 汇编:gcc -c hello.s -o hello.o
        注意:vim查看hello.o时会出现乱码,常用objdump -d hello.o
      • 链接:gcc hello.o -o hello
    • 编译

      • 将源文件一起编译:gcc test_a.c text_b.c -o test / gcc *.c -o test
      • 各个源文件分别编译再进行链接:
        gcc -c test_a.c
        gcc -c test_b.c
        gcc -o test_a.o test_b.o -o test
    • 有关vim:

      • 打开方式:vim [文件名]
      • 按i会进入insert模式,可以对代码进行编辑
      • 按Esc会进入普通模式
      • 使用快捷键进行编辑,编辑方式为:

    h 向左移动光标
    l 向右移动光标
    j 向下移动光标
    k 向上移动光标
    w 移动到下一个单词

    • vim的退出与保存
      • 保存并退出::wq+回车键Esc+Shift+zz
      • 不保存并退出: Esc+q!
    • GDB基本命令
      • gdb programm(启动GDB)
      • b 设断点:要会设4种断点:行断点、函数断点、条件断点、临时断点
      • run 开始运行程序
      • bt 打印函数调用堆栈
      • p 查看变量值
      • c 从当前断点继续运行到下一个断点
      • n 单步运行
      • s 单步运行
      • quit 退出GDB
      • 大写“K”可以用来查找函数的帮助信息:查看 man page,命令模式下,将光标放在函数名上,按"K"可以直接察看 man page。
      • 断点调试:

    break x (x表示设置断点位置的行号)
    delete x (x表示删除断点的行号)
    list 显示带行数的代码
    start+cotinue=run 运行
    s+c=r
    watch b 观察变量b的值,变化时程序停止
    s 进入函数内部
    n 单步调试
    quit 退出gdb
    info b 查看断点信息并保存
    save breakpoint fig.dp 保存断点到fig.dp中
    gdb hello2 -x fig.dp 调试时读取保存断点文件

    • Makefile文件的书写格式:vim Makefile
      • Makefile文件中添加清除命令(clean),如:.DCT:clean   
          clean: 删除所有文件类型为.o的文件
    • rm –rf *.o 编译和执行(make:编译, ./all:执行)

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

    • 问题一:在做测试的时候,不会使用GDB设置断点
      • 解决方案:在参考gdb常用断点调试总结,学习了(条件)断点的设置和保存,以及一些简单的GDB指令。
    • 问题二:GDB调试问题出现有符号表被读取,请使用"file" 命令”
      • 解决方案:在编译的时候,没有加-g的选项,导致没有产生调试符号。

    四、感想:
    在学习初期,由于大写的i(I),和小写的L(l)经常分不清楚,所以导致了很多编译错误,浪费了一些时间,多熟悉gcc相关的指令,便会避免出现这种问题,通过使用蓝魔云的视频学习,自己不太懂的知识点可以反复观看,但还是有一些知识点不太能掌握,还需巩固。

    五、PSP:

    ------ 代码行数 博客量 学习时间
    目标 5000 25篇 400小时
    第一周 63/63 1 7
  • 相关阅读:
    jmeter:dubbo接口测试
    聊聊基准测试的MVP方案
    建立团队的性能文化
    针对 Intellij IDEA 2018.2 版本 异常退出问题
    maven settings.xml配置优化
    Windows安装MySQL
    String的intern()方法详解
    Ubuntu下安装JDK图文教程详解 jdk-java6-30 .bin 的处理方法
    Iterator迭代器快捷键
    $.each $.map $.filter 区别 Script
  • 原文地址:https://www.cnblogs.com/sgm5/p/11568696.html
Copyright © 2011-2022 走看看