zoukankan      html  css  js  c++  java
  • mit-6.828 Lab Tools

    Lab Tools



    写在前面

    操作系统小学期选择了做mit6.828的lab,非常具有挑战性!希望可以记录下学习的内容和自己努力进步的点滴~


    GDB

    • linux 程序调试工具

    • gdb的目的主要是让你知道程序内部正在运行什么代码,或者是当程序崩溃的时候正在执行什么代码

    • GDB主要可以做四种事情来帮助你找到bug:

      • 启动你的程序,指定任意可以影响程序行为的参数。
      • 让你的程序在指定的条件停住
      • 测试你的程序停止的时候发生了什么
      • 改变程序内部的变量,来改正程序的错误继续执行
    ctrl + C,终止运行
    c , 继续运行
    si (or stepi), 执行一条机器指令
    b function or b file:line or b *addr 设置断点
    info break 查看断点的信息
    delete 断点号 ,删除第n 个断点
    n 单步执行,不进入函数
    step 单步调试,进入函数
    bt 显示当前程序的函数调用堆栈
    info registers 查看寄存器的内容
    x/Nx addr 二进制显示addr地址向下的n 个字 的内容
    x/Ni addr 汇编形式显示addr地址向下的n 条指令
    x/Ni $eip 显示当前指令下的 n 条指令
    symbol-file file
    thread n 运行指定线程
    info thread 查看线程信息
    

    GNU

    https://www.zhihu.com/question/319783573/answer/656033035

    GPL (通用公共许可证)

    • GPL,是GNU General Public License的缩写,是GNU通用公共授权非正式的中文翻译。
    • 大多数软件许可证决意剥夺你共享和修改软件的自由。相比之下,GNU通用公共许可证试图保证你共享和修改软件的自由。

    QEMU

    • QEMU是一套由法布里斯·贝拉(Fabrice Bellard)所编写的以GPL许可证分发源码的模拟处理器,在GNU/Linux平台上使用广泛。

    • QEMU有两种主要运作模式:

      • User mode模拟模式,亦即是用户模式。QEMU能启动那些为不同中央处理器编译的Linux程序。而WineDosemu是其主要目标。

      • System mode模拟模式,亦即是系统模式。QEMU能模拟整个电脑系统,包括中央处理器及其他周边设备。它使得为跨平台编写的程序进行测试及除错工作变得容易。其亦能用来在一部主机上虚拟数部不同虚拟电脑。

    • 软件优点

    ELF 可执行文件的格式

    最详细解析:

    https://luomuxiaoxiao.com/?p=139

    • Executable and Linkable Format

    • ELF文件的加载过程(load_elf_binary函数详解)

      https://blog.csdn.net/gatieme/article/details/51628257

      从编译/链接和运行的角度看,应用程序和库程序的连接有两种方式。
      一种是固定的、静态的连接,另一种是动态链接;

      这样,就有了两种不同的ELF格式映像。

      • 一种是静态链接的,在装入/启动其运行时无需装入函数库映像、也无需进行动态连接。
      • 另一种是动态连接,需要在装入/启动其运行时同时装入函数库映像并进行动态链接。
    • ELF文件内容

    https://blog.csdn.net/gatieme/article/details/51615799

    Verbose mode

    https://www.computerhope.com/jargon/v/verbose-mode.htm

    • A verbose mode is an option available in many computer operating systems, including Microsoft Windows, macOS, and Linux. It provides additional details as to what the computer is doing and what drivers and software it is loading during startup. This level of detail can be very helpful for troubleshooting problems with hardware or software, if errors are occurring during startup or after the operating system has loaded. Below is an example of verbose output in a Windows command line screen.

    • There are several ways to enable Verbose Mode. During startup, the screen may display which key(s) to press on the keyboard to enable Verbose Mode. Usually, users would press the Esc (escape) key for Linux, Ctrl+V keys for Microsoft Windows, and Command-V keys for macOS.

    Makefile

    • 一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,也可以执行操作系统的命令

    • 所要完成的Makefile 文件描述了整个工程的编译、连接等规则。其中包括:工程中的哪些源文件需要编译以及如何编译、需要创建哪些库文件以及如何创建这些库文件、如何最后产生我们想要的可执行文件。尽管看起来可能是很复杂的事情,但是为工程编写Makefile 的好处是能够使用一行命令来完成“自动化编译”,一旦提供一个(通常对于一个工程来说会是多个)正确的 Makefile。编译整个工程你所要做的事就是在shell 提示符下输入make命令。整个工程完全自动编译,极大提高了效率。

    • make是一个命令工具,它解释Makefile 中的指令。在Makefile文件中描述了整个工程所有文件的编译顺序、编译规则。Makefile 有自己的书写格式、关键字、函数。像C 语言有自己的格式、关键字和函数一样。而且在Makefile 中可以使用系统shell所提供的任何命令来完成想要的工作。Makefile在绝大多数的IDE 开发环境中都在使用,已经成为一种工程的编译方法。

  • 相关阅读:
    嵌入式移动数据库Oracle Lite
    一生至少应该看的60本书
    似水年华,如梦光阴
    MS SQL Server数据库中合并复制详解
    登录Windows Live Messenger失败,因为服务暂时不可用
    ASCII码表
    写在监考之后
    ASP.NET基本对象
    linux网络命令 vconfig ifconfig
    grep使用
  • 原文地址:https://www.cnblogs.com/cindycindy/p/mit-6828_Lab_Tools.html
Copyright © 2011-2022 走看看