实验环境的使用实验报告.docx
《实验环境的使用实验报告.docx》由会员分享,可在线阅读,更多相关《实验环境的使用实验报告.docx(7页珍藏版)》请在冰豆网上搜索。
![实验环境的使用实验报告.docx](https://file1.bdocx.com/fileroot1/2023-1/25/92ebbb08-caa8-4f75-a13b-a8be3103ab5b/92ebbb08-caa8-4f75-a13b-a8be3103ab5b1.gif)
实验环境的使用实验报告
实验环境的使用实验报告
操作系统实验报告
课程名称
操作系统
课程编号
0906553
实验项目名称
实验环境的使用
学号
年级
姓名
专业
计算机科学与技术
学生所在院
计算机科学与技术学院
指导老师
实验室名称
哈尔滨工程大学
计算机科学与技术学院
实验环境的使用
一.实验概述
1.实验名称:
实验环境的使用
2.实验目的:
1)熟悉操作系统集成实验环境OSLab的基本使用方法;
2)练习编译、调试EOS操作系统内核以及EOS应用程序。
3.实验类型:
验证
4.实验内容:
1)准备实验,启动OSLab;
2)学习OSLab的基本使用方法;
3)EOS内核项目的生成和调试;
4)EOS应用程序项目的生成和调试;
5)退出OSLab;
6)保存EOS内核项目
二.实验环境
操作系统:
windowsXP
编译器:
TevalatonOSLab
语言:
C++
三.实验过程
1.实验过程:
1)启动OSLab,在启动后弹出的对话框中填入学号、姓名;
2)学习OSLab的基本使用方法,使用OSLab编写一个windows控制应用台应用程序,熟悉OSLab的基本使用方法(主要包括新建项目、生成项目、调试项目等);
在“文件”菜单中选择新建项目,并选择项目模板“控制台应用程序”。
3)点击F5生成项目,并对结果中的问题进行修改。
如果源代码中存在语法错误,“输出”窗口会输出相应的错误信息(包括错误所在文件的路径,错误在文件中的位置,以及错误原因),并在最后提示生成失败。
此时在“输出”窗口中双击错误信息所在的行,OSLab会使用源代码编辑器打开错误所在的文件,并自动定位到错误对应的代码行。
可以在源代码文件中故意输入一些错误的代码(例如删除一个代码行结尾的分号),然后再次生成项目,然后在“输出”窗口中双击错误信息来定位存在错误的代码行,将代码修改正确后再生成项目。
4)执行项目,在OSLab中选择“调试”菜单中的“开始执行(不调试)”,可以执行刚刚生成的Windows控制台应用程序。
启动执行后会弹出一个Windows控制台窗口,显示控制台应用程序输出的内容。
按任意键即可关闭此Windows控制台窗口。
5)调试项目,点击“项目管理器”窗口中的“源文件”文件夹节点,在弹出的快捷菜单中选择“添加”中的“添加新文件”,文件中的函数如下所示。
inttest1(intn){
n++;
returnn;}
6)将主函数进行修改。
7)使用断点中断执行,在main函数中定义变量n的代码行添加一个断点,在“调试”菜单中选择“启动调试”,Windows控制台应用程序开始执行,随后OSLab窗口被自动激活,并且在刚刚添加断点的代码行左侧空白中显示一个黄色箭头,表示程序已经在此行代码处中断执行(也就是说下一个要执行的就是此行代码)。
此时查看控制台应用程序的窗口,可以看到窗口中没有输出n的值。
8)选择逐过程调试,可以看到控制台应用程序窗口,已经打印了n的值,结束调试。
9)再次启动程序,程序依旧会在断点处中断,此时采用逐语句进行调试,可以发现黄色箭头指向了test1中的函数,选择“跳出”,会跳出test1函数,返回到上级函数中继续调试;
10)查看变量的值,将鼠标移动到源代码编辑器中变量n的名称上,此时会弹出一个窗口显示出变量n当前的值(由于此时还没有给变量n赋值,所以是一个随机值)。
在源代码编辑器中变量n的名称上点击鼠标右键,在弹出的快捷菜单中选择“快速监视”,可以使用“快速监视”对话框查看变量n的值。
然后,可以点击“关闭”按钮关闭“快速监视”对话框。
11)调用堆栈,启动调试,会在之前设置的断点处中断,选择“调试”菜单“窗口”中的“调用堆栈”,激活“调用堆栈”窗口。
可以看到当前“调用堆栈”窗口中只有一个main函数(显示的内容还包括了参数值和函数地址)。
采用逐过程调试,直到进入到test1函数,查看“调用堆栈”窗口可以发现在堆栈上有两个函数test1和main。
其中当前正在调试的test1函数在栈顶位置,main函数在栈底位置。
说明是在main函数中调用了test1函数。
在“调用堆栈”窗口中双击main函数所在的行,会有一个绿色箭头指向main函数所在的行,表示此函数是当前调用堆栈中的活动函数。
同时,会将main函数所在的源代码文件打开,并也使用一个绿色箭头指向test1函数返回后的位置。
反复双击“调用堆栈”窗口中Func函数和main函数所在的行,查看“监视”窗口中变量n的值,可以看到在不同的堆栈帧被激活时,OSLab调试器会自动更新“监视”窗口中的数据,显示出对应于当前活动堆栈帧的信息。
结束调试。
12)新建项目,选择项目模板“EOSKernel”。
13)生成项目,打开C:
\eos\debug文件夹,查看生成的对象文件和目标文件。
找到boot.bin、loader.bin和kernel.dll三个二进制文件,这三个文件就是EOS操作系统在运行时需要的可执行文件。
OSLab每次启动运行EOS操作系统之前,都会将这三个文件写入一个软盘镜像文件中,然后让虚拟机运行这个软盘镜像中的EOS(相当于将写有这三个二进制文件的软盘放入一个物理机的软盘驱动器中,然后按下开机按钮)。
找到libkernel.a文件,此文件是EOS内核文件kernel.dll对应的导入库文件。
14)在“项目管理器”窗口的文件夹中找到start.c文件节点,双击此文件节点使用源代码编辑器打开start.c文件。
在start.c文件中KiSystemStartup函数的“KiInitializePic();”语句所在行添加一个断点,继续调试,熟悉各种调试功能的使用方法。
15)查看软盘镜像文件的内容,在“项目管理器”窗口中双击软盘镜像文件Floppy.img,就会使用FloppyImageEditor工具打开此文件。
在FloppyImageEditor工具的文件列表中可以找到loader.bin文件和kernel.dll文件,这两个文件都是在启动调试时被写入软盘镜像文件的(可以查看这两个文件的修改日期)。
boot.bin文件在启动调试时被写入了软盘镜像的引导扇区中,不受软盘文件系统的管理,所以在文件列表中找不到此文件。
关闭FloppyImageEditor工具。
16)点击OSLab工具栏上的“项目配置”下拉列表,选择下拉列表中的“Release”项目配置,“Release”项目配置被设置为新的活动项目配置,生成项目。
17)SDK文件夹中提供了开发EOS应用程序需要的所有文件。
打开SDK文件夹中的bin文件夹,可以看到有两个名称分别为debug和release的文件夹。
debug文件夹是在使用debug配置生成项目时生成的,其中存放了调试版本的EOS二进制文件。
release文件夹是在使用release配置生成项目时生成的,其中存放了发布版本的EOS二进制文件(不包含调试信息)。
分别打开这两个文件夹查看其中包含的文件。
18)新建EOS应用程序项目,生成项目,打开C:
\eosapp\debug文件夹,查看生成的对象文件和目标文件。
其中的EOSApp.exe就是EOS应用程序的可执行文件。
OSLab每次启动执行EOS应用程序时,都会将EOS应用程序的可执行文件写入软盘镜像,并且会将SDK文件夹中对应配置(Debug或Release)的二进制文件写入软盘镜像,然后让虚拟机运行软盘镜像中的EOS,待EOS启动后再自动执行EOS应用程序。
19)调试项目,启动调试,。
OSLab会弹出一个调试异常对话框,选择“是”调试异常,EOS应用程序会中断执行,黄色箭头指向下一个要执行的代码行,在EOSApp.c的printf("Helloworld!
\n");代码行添加一个断点,继续调试,查看虚拟机窗口,EOS应用程序执行完毕。
20)将EOSApp文件重命名为MyApp,在“调试”菜单中“删除所有断点”,忽略异常,激活虚拟机窗口,可以到自动执行的可执行文件的名称为MyApp.exe。
21)退出OSLab,在关闭时会弹出一个保存数据的对话框,核对学号和姓名后点击“保存”,OSLab关闭。
四.实验体会
本次实验为初步了解实验平台的使用,通过一步步的操作,加深了在操作系统上对程序创建、调试程序的掌握,但对OS的相关知识还不是很了解。
在让输出框显示的过程中,由于没有引入合适的标准库,编写代码时产生错误,最后通过添加#include完成对输出框的暂停显示。
.