zoukankan      html  css  js  c++  java
  • 20145312 《信息安全系统设计基础》第2周学习总结

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

    教材学习内容总结

    Vim基本操作

    移动光标 :

    按Esc进入普通模式,在该模式下使用方向键或者h,j,k,l键可以移动游标。

    进入插入模式 :

    在普通模式下使用下面的键将进入插入模式,并可以从相应的位置开始输入。

    保存文档 :命令行模式下保存文档从普通模式输入:进入命令行模式,输入w回车,保存文档。输入:w 文件名可以将文档另存为其他文件名或存到其它路径下。

    退出vim:

    命令行模式下退出vim:从普通模式输入:进入命令行模式,输入wq回车,保存并退出编辑。
    普通模式下退出vim:普通模式下输入Shift+zz即可保存退出vim

    删除文本:

    GCC

    GNU CC(简称为gcc)是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。gcc又是一个交叉平台编译器,它能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件,因此尤其适合在嵌入式领域的开发编译。

    1.预处理阶段:一般格式为:gcc [选项] 要编译的文件 [选项] 目标文件 gcc -E hello.c -o hello.i
    2.编译阶段:gcc将代码翻译成汇编语言,使用选项-S只进行编译而不进行汇编,结果生成汇编代码。gcc -S hello.i -o hello.s
    3.汇编阶段:将.s文件转成目标文件,使用选项-c可以看到汇编代码转换为二进制目标代码。gcc -c hello.s -o hello.o
    4.链接阶段:默认搜索链接到libc.so.6函数库当中,调用库文件中已经实现的函数。
    

    GDB

    GDB最基本的命令有:

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

    GDB的使用

    gdb主要调试的是C/C++的程序。要调试C/C++的程序,首先在编译时,必须要把调试信息加到可执行文件中。使用编译器(cc/gcc/g++)的 -g 参数即可。如:

    $ gcc -g hello.c -o hello
    $ g++ -g hello.cpp -o hello
    

    启动GDB的方法有以下几种:

    gdb <program> program也就是执行文件,一般在当前目录下。
    gdb <program> core 用gdb同时调试一个运行程序和core文件,core是程序非法执行后,core dump后产生的文件。
    gdb <program> <PID> 如果程序是一个服务程序,那么可以指定这个服务程序运行时的进程ID。gdb会自动attach上去,并调试它。program应该在PATH环境变量中搜索得到。
    

    Makefile使用

    Makefile的一般写法

    test(目标文件): prog.o code.o(依赖文件列表) 
    tab(至少一个tab的位置) gcc prog.o code.o -o test(命令)
    

    使用带宏的 Makefile

    Makefile还可以定义和使用宏(也称做变量),从而使其更加自动化,更加灵活,在Makefile中定义宏的格式为:macroname = macrotext 使用宏的格式为:$(macroname)

    生成静态库math.h,共享库math.so

    生成静态库:

    1. 生成目标文件gcc -c add.c sub.c mul.c div.c
    2. 生成静态库:ar rcs math.a add.o sub.o mul.o div.o

    生成共享库

    1. 生成目标文件:gcc -fpic -c add.c sub.c mul.c div.c
    2. 生成共享库:gcc -shared -o math.so add.o sub.o mul.o div.o

    学习中的问题和解决过程

    问题:

    如何区分GDB的n(next)命令和s(step)命令,实际使用中应该优先选用哪个?

    解答:

    GDB的n(next)命令让GDB执行下一行,然后暂停。 s(step)命令的作用与此类似,只是在函数调用时step命令会进入函数。而next导致程序执行的暂停出现在下次调用函数时。DDD有对应的Next和Step菜单项。简单来说next:执行一行源代码但不进入函数内部。step :执行一行源代码而且进入函数内部。我认为应该优选step,通过GDB的next命令一次是移动一行代码,而通过step命令单步调试一段时间,更能够仔细检查靠近断点处的程序状态和行为。

    本周代码托管截图

    学习进度条

    参考资料

  • 相关阅读:
    Building Seam 2.0 Application with NetBeans 6.1
    Better Builds with Maven学习笔记
    NetBeans Globel Translation Team Tshirt!
    Participate in MySQLGlassFish Student Contest and Win $500
    NetBeans Globel Translation Team Tshirt!
    Better Builds with Maven学习笔记
    Building Seam 2.0 Application with NetBeans 6.1
    Maven2 的新特性
    Participate in MySQLGlassFish Student Contest and Win $500
    数据库设计及数据缓存
  • 原文地址:https://www.cnblogs.com/yx20145312/p/5907195.html
Copyright © 2011-2022 走看看