计算机系统 实验一安装Linux并进行简单编译和调试

实验题目

安装Linux环境,并进行简单程序的编译和GDB调试。

实验目的

本实验为课程预备实验,要求成功安装linux基本环境,并进行简单程序的编译和GDB调试,从而为后续课程实验搭建基础运行平台。

实验环境

个人电脑、linux发行版本

实验内容及操作步骤

第一步,在电脑平台上安装linux系统与环境;
第二步,成功在linux系统中使用gcc完成简单c语言的编译和执行;
第三步,使用GDB进行程序基本的程序调试和反汇编。

安装Linux所遇到的问题

1.vim编辑模式下如何复制粘贴代码
复制到光标位置
按Esc退出输入,按y+y直接复制光标所在行的内容,按p粘贴
2.鼠标键盘被虚拟机占用,无法回到实体机界面。
这个问题刚开始我也不知道怎么解决,也就随便乱霍霍,后来发现原因是自己没注意虚拟机的提示。对于virtualbox,解除鼠标占用的热键是右边的ctrl。
关于安装Linux并没有遇到特别多的问题,倒是在写实验的时候遇到了好多问题

1.使用gcc完成简单的编译与执行
预编译

gcc -E hello.c -o hello.i

说明:
-E,只预编译。直接输出预编译结果。
-E进行预编译时,将输出信息,将程序所包含的头文件,函数,宏定义等,进行扩展。

编译

gcc -S hello.i -o hello.s

说明:
S,只执行到源代码到汇编代码的转换,输出汇编代码。

汇编

gcc -c hello.s -o hello.o

-o, 指定输出文件名 该参数可以省略。默认下(gcc sourceFile.c):生成名为a.out的可执行文件。
-c:生成名为hello.o目标文件。(进行编译,不链接)
例:
在这里插入图片描述

2.如何使用gdb调试,进行反汇编以及遇到的问题
例:在这里插入图片描述
生成可执行文件以及调试程序
在这里插入图片描述
单步执行,运行程序,停在第一行执行语句
在这里插入图片描述
运行程序(由于我没有设置断点,所以问我是否是从一开始就开始)
在这里插入图片描述
设置断点为2,并且run
在这里插入图片描述
n: 执行一行源程序代码,此行代码中的函数调用也一并执行。
在这里插入图片描述
list :简记为 l ,其作用就是列出程序的源代码,默认每次显示10行。
在这里插入图片描述
查看寄存器,第一数列是寄存器的名称,第二数列是十六进制 第三数列是十进制
在这里插入图片描述
查看断点的内容
在这里插入图片描述
退出gdb调试
3.gdb调试中出现的问题
在这里插入图片描述
输入 ld test1.o -o test1 结果出现问题,说找不到条件目录???明明按照老师所演示的步骤来,为什么不行,后来才发现 as和ld压根跟gcc不是一个东西,如果是汇编程序,就用as和ld;如果是c程序,就用gcc
在这里插入图片描述
当我没有设置断点,但是run了之后,不能执行一行源程序代码,有可能是因为没有设置断点,不知道是执行哪一行代码。
查看ebx寄存器时,告诉我并没有这个寄存器
(info reg)查看所有寄存器,但是没有寄存器!!!直到之后设置了断点,才可以出现。

实验结果及分析:

在电脑平台上已成功安装linux系统与环境;
成功在linux系统中使用gcc完成简单c语言的编译和执行;
成功使用GDB进行程序基本的程序调试和反汇编。
在这里插入图片描述
反调试之前,首先得学会程序的转换过程,以及了解gcc的常用命令
在进行写代码以及反调试时,不要写错了,写错了已经进行下一步,就不能更改。
收获与体会:
更加熟练的使用gcc,并且由于这次调试,更加了解了gdb的使用方法以及用处。在调试过程中,出现了许多问题,上网查询资料可以获得许多帮助。
之后进行调试时,也一定要灵活使用断点来帮助自己找到问题所在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值