OUC-网络安全导论-lab4-gcc&gdb

lab4-gcc&gdb

一、实验目标

学习使用gcc&gdb的一些基本操作

二、实验内容&实验步骤

一、使用 C 语言编写以下程序并按要求完成实验,实验每一步均需要截图: 使用递归的方法计算 1+2+…+n(n<=1000)的和,若输入的 n 不是正整数则返 回 0,若 n 超出取值范围返回-1。

  1. 将该程序保存,文件名为 lab4.c

    打开虚拟机终端,切换到你想要保存代码的目录。你可以使用cd命令来切换目录

    cd ~/Documents/Coding
    

    创建一个新文件并打开它以编辑,使用文本编辑器nano来创建文件

    nano lab4.c
    

    nano中,按Ctrl + O,然后按Enter来保存文件

    nano中,按Ctrl + X,退出文本编辑器

  2. 使用 gcc 编译该程序(两种方法),最终的可执行文件名为 lab,要求生成 所有警告信息

    gcc -Wall -o lab lab4.c
    
    image-20231021144411905
  3. 仿照课上的例子定义宏,练习使用-D 参数

    #define MY_MACRO
    

    )

    在编译时使用-D参数启用宏

  4. 删除刚才定义的宏,重新编译,并开启 PIE,强度为 1

    gcc -Wall -o lab lab4.c -fPIE -pie
    

    )

  5. 练习使用 gdb 的常用命令调试该程序,需要练习的命令至少包括运行、退出、 查看本程序代码、设置断点、删除断点、设置断点状态、打印变量、单步调 试、栈操作、显示断点、显示寄存器信息、显示栈帧、显示参数和局部变量、 打印栈帧、以某种格式打印某一地址处开始的 N 个长度单元为 U 的内存值。

    • 启动GDB:

      gdb ./lab
      
    • 运行程序:

      run
      

      ![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=C%3A%5CUsers%5Cz10

    • 退出GDB:

      quit
      
    • 查看程序代码:

      list
      
    • 设置断点:

      break 1
      
    • 删除断点:deleteclear

      #1
      delete 1
      #2
      clear 1
      
    • 设置断点状态:

      #1
      enable 5
      
      #2
      disable 5
      
    • 打印变量:

      print "n"
      
    • 单步调试:

      step
      
    • 栈操作:

      backtrace
      
    • 显示断点:

      info breakpoints
      
    • 显示寄存器信息:

      info registers
      
    • 显示栈帧:

      info frame
      
    • 显示参数和局部变量:

      #显示参数
      info args
      #局部变量
      info locals
      
    • 打印栈帧:

      info frame 1
      
    • 打印内存值:

      x/Nfu <address>
      

注:具体操作自定但要包括需要练习到的内容,对于一些命令,尽可能解释 各字段含义,如 info frame 命令。

二,Fork此⽹站到本地仓库

步骤 1:安装所需的工具

sudo yum install gcc-c++

步骤 2:创建项目文件夹

在虚拟机中,创建一个新的文件夹“MyProject”以容纳项目文件

步骤 3:创建main.cpp代码文件

使用文本编辑器创建 “main.cpp” 文件。

nano main.cpp

nano编辑器中,按下Ctrl + O来保存,然后按Enter,接着按下Ctrl + X来退出。

步骤 4:创建 Makefile 文件

使用同样的方法,在终端中创建 “Makefile” 文件

nano Makefile

步骤 5:编译项目

在终端中,进入项目文件夹并执行以下命令来编译项目

make

步骤 6:运行项目

执行以下命令来运行你的程序:

./MyProgram

输出"Hello,Makefile!",程序运行成功

步骤 7:清理项目

如果需要清理项目,可以执行以下命令来删除生成的可执行文件

make clean

三、实验目的

一、使用 C 语言编写以下程序并按要求完成实验,实验每一步均需要截图:

使用递归的方法计算 1+2+…+n(n<=1000)的和,若输入的 n 不是正整数则返 回 0,若 n 超出取值范围返回-1。

  1. 将该程序保存,文件名为 lab4.c

  2. 使用 gcc 编译该程序(两种方法),最终的可执行文件名为 lab,要求生成 所有警告信息

  3. 仿照课上的例子定义宏,练习使用-D 参数

  4. 删除刚才定义的宏,重新编译,并开启 PIE,强度为 1

  5. 练习使用 gdb 的常用命令调试该程序,需要练习的命令至少包括运行、退出、 查看本程序代码、设置断点、删除断点、设置断点状态、打印变量、单步调 试、栈操作、显示断点、显示寄存器信息、显示栈帧、显示参数和局部变量、 打印栈帧、以某种格式打印某一地址处开始的 N 个长度单元为 U 的内存值。

    注:具体操作自定但要包括需要练习到的内容,对于一些命令,尽可能解释 各字段含义,如 info frame 命令。

二、自行了解 Makefile 相关内容,并编写 Makefile 文件,并写一个 Makefile 的 QuickStart,附上截图和文字说明。

注意:请不要直接复制、粘贴,尝试用自己的语言进行叙述

四、实验总结

本次实验涵盖了C语言、编译、宏定义以及调试的多个方面。通过编写C程序并使用GCC进行编译,学会了如何生成可执行文件以及处理警告信息。宏定义的练习有助于理解条件编译的概念,通过GDB的调试练习,掌握了基本的调试技巧,包括断点设置、变量查看、单步调试等。学习Makefile文件用于编译和构建一个简单的C程序,以及清理项目。

注:具体操作自定但要包括需要练习到的内容,对于一些命令,尽可能解释 各字段含义,如 info frame 命令。

二、自行了解 Makefile 相关内容,并编写 Makefile 文件,并写一个 Makefile 的 QuickStart,附上截图和文字说明。

注意:请不要直接复制、粘贴,尝试用自己的语言进行叙述

四、实验总结

本次实验涵盖了C语言、编译、宏定义以及调试的多个方面。通过编写C程序并使用GCC进行编译,学会了如何生成可执行文件以及处理警告信息。宏定义的练习有助于理解条件编译的概念,通过GDB的调试练习,掌握了基本的调试技巧,包括断点设置、变量查看、单步调试等。学习Makefile文件用于编译和构建一个简单的C程序,以及清理项目。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值