一、 实验目标:
熟悉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,做到自己消化。