虚拟机实验环境配置与使用(计算机系统2)

news2024/11/18 0:19:00

一、 实验目标:

熟悉Linux上C程序的编译和调试工具,包括以下内容:

1. 了解Linux操作系统及其常用命令

2. 掌握编译工具gcc的基本用法

3. 掌握使用gdb进行程序调试

二、实验环境与工件

1.个人电脑

2. Fedora 13 Linux 操作系统

3. gcc

4. gdb

三、实验内容与步骤

1. 实验环境配置

先要下载VMware Workstation

(这里是在https://pan.baidu.com/s/1MdEx83411Hc101KRO_Hkjg?pwd=e37p下载的,密匙:ZF3R0-FHED2-M80TY-8QYGC-NPKYF)以及还有镜像(这里我是下载了两个)

接着点击创建新的虚拟机

选择自定义(高级),然后点击下一步

浏览下载好的镜像

然后正常的个性化Linux

给自己的虚拟机命名

处理器设置1个,内核数量为两个,然后点击下一步

分配空间(一般是4G)

选择使用网络地址转换(NAT)(E)

选择LST logic SAS(S)

选择SCSI(S)

选择创建新虚拟磁盘

最大磁盘设置200G,然后取消勾选立即分配所有磁盘空间(因为会立即分配占用内存空间),选择“将虚拟磁盘拆分成多个文件”(M)

点击开启此虚拟机

然后点击选项搜索“终端”

2.1首先切换为超级用户。

输入su

Ps:此处一开始失败,权限不对,是因为屏蔽了此功能,需要输入(sudo passwd).

2.2创建新用户, 设置新建用户的密码

Ps:只有设置了密码才能激活用户,否则无法以该用户身份登录

2.3关闭终端,然后重新打开(注销当前用户,并以新建的用户身份登录)输入whoami,显示当前用户名。

3.1建用户主目录下创建子目录:gdbdebug, 并进入gdbdebug 子目录。

 创建子目录:mkdir + 目录名

 进入子目录:cd 子目录名

 显示当前所在目录:pwd

4.使用vi

先touch reverse.h创建或者直接vi reverse.h

4.1.1编辑reverse.h(声明函数但不给出定义)

Ps:不要忘记“;”,不然后面报错会很厉害。

4.1.2编辑reverse.c

4.1.3编译reverse.c

(这是改过的)

由此我们知道可以把reverse.c修改成

4.1.4运行程序

4.2.1找出问题进行调试(gcc -g reverse.c -o reverse1)ps:最后一个不是字母l而且数字1

4.2.2启用GDB调试

4.2.3键入list,查看源代码并根据行号/函数名设置断点

4.2.4在main函数处添加断点

4.2.5 猜测错误出现在20,22,24行,依次添加断点.

4.2.6 添加完断点后,输入info break查看断点信息.

4.2.7 观察变量值,并作分析,推测错误.

4.2.8修正代码

4.2.9重新编译并运行,结果为“xjl”,满足逆序输出,答案正确。

Ps:这里需要重新编译不重新编译跑出来的结果还是之前代码的结果。

四、实验结果

输入“ljx”,运行结果为“xjl”,正确。

五、实验总结与体会

总结:对虚拟机第一次接触,有很多概念上不是很了解从b站上了解了什么是虚拟机,以及用处,了解了Linux系统。费了不少时间,但也很感谢助教的帮忙解答,以及同学的指导,其中碰到很多问题比如vi编辑器有问题,一直换行输出a,b,c但后面在同学的教导下才知道是vi出了问题需要重新装,以及同学教了我一些比较实用的指令比如向上的箭头可以返回你上一条敲的指令,可以更加快捷的完成任务,就是这次实验下载了两个镜像,重复做了两次实验,两个镜像的终端也完全不同,花了很多时间,但最后还是做出来了,结果是好的。

体会:需要多看b站的学习视频,有不会的地方要及时请教助教和同学老师,细看指导的ppt,做到自己消化。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1506249.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLOV5 初体验:简单猫和老鼠数据集模型训练

1、前言 前两天,通过OpenCV 对猫和老鼠视频的抽取,提取了48张图片。这里不再介绍,可以参考之前的文章:利用OpenCV 抽取视频的图片,并制作目标检测数据集-CSDN博客 数据的目录如下: 项目的下载见文末 2、制…

Storyboard动画、EventTrigger事件触发器

就是动画&#xff0c;要注意的就是EventTrigger中的SourceName就是想要实现这个功能的按钮 <StackPanel Orientation"Vertical"><Rectanglex:Name"rect"Width"200"Height"40"Fill"Pink" /><StackPanel Orie…

Vue3学习记录(六)--- 组合式API之依赖注入和异步组件

一、依赖注入 1、简介 ​ 在前面的笔记中&#xff0c;我们学习过父组件向子组件传递数据时&#xff0c;需要借助props来实现。但如果父组件想要向孙子组件传递数据&#xff0c;那就要连续使用两层props逐级向下传递&#xff0c;如果要接收数据的是更深层的后代组件&#xff0…

同一交换机下不同网段的终端通信

文章目录 一个有趣的实验 大家都知道不同网段的IP地址要想通信需要通过网关进行路由转发&#xff0c;而一般通过路由器来做默认网关。 一个有趣的实验 一台二层交换机下&#xff0c;连接两个不同网段的PC&#xff0c;实现彼此之间的通信。 一台S3700交换机&#xff0c;两台PC。…

【金三银四】Spring面试题

目录 1、什么是Spring2、说一下Spring的IOC3、Spring的AOP4、连接点&#xff1f;切入点&#xff1f;5、Spring AOP 是通过什么实现的6、Spring Bean的生命周期是怎么样的&#xff1f;7、Spring Bean的初始化过程是怎么样8、Spring的事务传播机制有哪些&#xff1f;9、Autowired…

Qt 中Json文件的操作

Json文件的读取 QFile file("data.json"); //准备好的文件file.open(QIODevice::ReadOnly|QIODevice::Text);QByteArray arr file.readAll();QJsonDocument jsonDoc QJsonDocument::fromJson(arr);QJsonObject jsonObj jsonDoc.object();qint32 id jsonObj["…

网络工程师笔记10 ( RIP / OSPF协议 )

RIP 学习路由信息的时候需要配认证 RIP规定超过15跳认定网络不可达 链路状态路由协议-OSPF 1. 产生lsa 2. 生成LSDB数据库 3. 进行spf算法&#xff0c;生成最有最短路径 4. 得出路由表

Python错题集-8:AttributeError(找不到对应的对象的属性)

1问题描述 AttributeError: AxesSubplot object has no attribute arc 2代码详情 import matplotlib.pyplot as plt# 创建一个新的图形和坐标轴 fig, ax plt.subplots()# 定义弧线的参数 center (0.5, 0.5) # 圆心坐标 (x, y) width 1.0 # 半径 height 0.5 # 半径 ang…

学习笔记。。。

1.字符串的拼接 1.sprintf() 往字符串的前面或中间、后面拼接一个字符串。 2.strncpy()用来复制字符串的前n个字符 //dest为目标数组&#xff0c;src为源数组&#xff0c;n为要复制的字符个数 2.char* My_strncpy(char* dest, const char* src, int n) 3.char *strcat(ch…

【Axure高保真原型】可视化动点素材

今天和粉丝们免费分享可视化动点素材的原型模板&#xff0c;该模板使用简单&#xff0c;复制粘贴&#xff0c;预览时即可实现动点效果&#xff0c;本案例提供红黄蓝绿4中颜色的动点&#xff0c;如果需要其他颜色&#xff0c;可以自行编辑svg里面的代码 【原型效果】 【模板下载…

Leetcode 59.螺旋矩阵Ⅱ

1.题目 2.思路 &#xff08;借用代码随想录的图&#xff09; 1.我们将转一圈看作一个循环&#xff08;1->2->3->4->5->6->7->8 这是一个循环&#xff09; 2.在这个循环里&#xff0c;我们要画四条边&#xff08;上右下左&#xff09; 填充上行从左到右 填…

[天天向上] 学习方法论-事半功倍的问题解决方法

目录 一、尝试独立解决问题1. 关于独立2. 像密室逃脱一样 二、提问的艺术1. 合适的自我介绍1.1 群名片2.2 研究方向/业务内容 2. 详细的问题描述2.1 问题描述要点2.2 描述格式2.3 问题内容描述&#xff0c;尤其是当前进展和问题 3. 如何让更多的人为你解答4. 如何结束提问更优雅…

ThreadLocal使用,配合拦截器HandlerInterceptor使用

ThreadLocal使用&#xff0c;配合拦截器HandlerInterceptor使用 ThreadLocal的使用场景通常涉及多线程环境下需要为每个线程保留独立状态的情况。它提供了一种简单的方式来管理线程本地变量&#xff0c;使得每个线程都可以独立地访问和修改自己的变量副本&#xff0c;而不会影…

《C语言文件操作》

目录 1. 文本数据和二进制 1.1 文本数据 1.2 二进制数据 1.3文本文件和二进制文件 2. 文件的打开和关闭 2.1 文件指针 2.2 打开文件 2.3 关闭文件 2.4 注意事项&#xff1a; 3. 文本文件的读写 3.1 向文件中写入数据 3.2 从文件中读取数据 3.3 注意事项 4. 二进制文件的读写…

如何对于单元格数据进行清洗处理

如何对于单元格数据进行清洗处理 陪伴意味着有人愿意把最美好的东西给你&#xff0c; 那就是时间。 当然陪伴也是一个很平常的事情&#xff0c; 日复一日&#xff0c;年复一年。 到最后陪伴就成了一种习惯。 约定好的相逢&#xff0c;伴你天荒地老&#xff01; 陪伴是最长情的告…

Git分支管理(Git分支的原理、创建、切换、合并、删除分支)

系列文章目录 文章一&#xff1a;Git基本操作 文章目录 系列文章目录前言一、Git分支是什么二、Git分支的原理三、创建分支四、切换分支五、合并分支六、删除分支 前言 在上一篇文章中&#xff0c;我们学习了如何使用Git的一些基本操作&#xff0c;例如安装Git、创建本地仓库…

Unity使用Addressable热更新

先看热更新的gif: Addressable是Unity推出的打ab包方案。不需要手动写AB打包脚手架了&#xff0c;不需要关心依赖&#xff0c;这也简化了ab热更新的流程。Addressable打包需要先将资源放入group中&#xff0c;按group来打包&#xff0c;每个group对应一个ScriptableObject的配置…

Unity 关节:铰链、弹簧、固定、物理材质:摩檫力、 特效:拖尾、

组件-物理-关节&#xff1a;铰链&#xff08;类似门轴&#xff09; 自动动作、多少力可以将其断开、 弹簧可以连接另一个刚体&#xff08;拖动即可&#xff09; 固定一般是等待一个断裂力&#xff0c;造成四分五裂的效果。 物理材质 设置摩檫力&#xff0c;则可以创造冰面的…

【算法面试题】-04

执行时长 def min_execution_time(n, size, tasks):a 0ans sizei 0while i < size:tmp tasks[i]a tmpif a < n:a 0else:a - ni 1ans a // nif a % n ! 0:ans 1return ans# 读取输入 n int(input()) size int(input()) tasks list(map(int, input().split()))…

macOS14.4安装FFmpeg及编译FFmpeg源码

下载二进制及源码包 二进制 使用brew安装ffmpeg : brew install ffmpeg 成功更新到ffmpeg6.1 下载FFmpeg源码