实验环境的使用实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

操作系统实验报告

哈尔滨工程大学

计算机科学与技术学院

实验环境的使用

一.实验概述

1.实验名称:实验环境的使用

2.实验目的:

1)熟悉操作系统集成实验环境OS Lab的基本使用方法;

2)练习编译、调试EOS操作系统内核以及EOS应用程序。

3.实验类型:验证

4.实验内容:

1)准备实验,启动OS Lab;

2)学习OS Lab的基本使用方法;

3)EOS内核项目的生成和调试;

4)EOS应用程序项目的生成和调试;

5)退出OS Lab;

6)保存EOS内核项目

二.实验环境

操作系统:windows XP

编译器:Tevalaton OS Lab

语言:C++

三.实验过程

1.实验过程:

1)启动OS Lab,在启动后弹出的对话框中填入学号、姓名;

2)学习OS Lab的基本使用方法,使用OS Lab编写一个windows控制应用台应用程序,熟悉OS Lab的基本使用方法(主要包括新建项目、生成项目、调试项目等);

在“文件”菜单中选择新建项目,并选择项目模板“控制台应用程序”。

3)点击F5生成项目,并对结果中的问题进行修改。

如果源代码中存在语法错误,“输出”窗口会输出相应的错误信息(包括错误所在文件的路径,错误在文件中的位置,以及错误原因),并在最后提示生成失败。此时在“输出”窗口中双击错误信息所在的行,OS Lab 会使用源代码编辑器打开错误所在的文件,并自动定位到错误对应的代码行。可以在源代码文件中故意输入一些错误的代码(例如删除一个代码行结尾的分号),然后再次生成项目,然后在“输出”窗口中双击错误信息来定位存在错误的代码行,将代码修改正确后再生成项目。

4)执行项目,在OS Lab 中选择“调试”菜单中的“开始执行(不调试)”,可以执行刚刚生成的Windows 控制台应用程序。启动执行后会弹出一个Windows 控制台窗口,显示控制台应用程序输出的内容。按任意键即可关闭此Windows 控制台窗口。

5)调试项目,点击“项目管理器”窗口中的“源文件”文件夹节点,在弹出的快捷菜单中选择“添加”中的“添加新文件”,文件中的函数如下所示。

int test1(int n){

n++;

return n;}

6)将主函数进行修改。

7)使用断点中断执行,在main函数中定义变量n的代码行添加一个断点,在“调试”菜单中选择“启动调试”,Windows 控制台应用程序开始执行,随后OS Lab 窗口被自动激活,并且在刚刚添加断点的代码行左侧空白中显示一个黄色箭头,表示程序已经在此行代码处中断执行(也就是说下一个要执行的就是此行代码)。此时查看控制台应用程序的窗口,可以看到窗口中没有输出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的值,可以看到在不同的堆栈帧被激活时,OS Lab 调试器会自动更新“监视”窗口中的数据,显示出对应于当前活动堆栈帧的信息。结束调试。

12)新建项目,选择项目模板“EOS Kernel”。

13)生成项目,打开C:\eos\debug 文件夹,查看生成的对象文件和目标文件。找到boot.bin、loader.bin 和kernel.dll 三个二进制文件,这三个文件就是EOS 操作系统在运行时需要的可执行文件。OS Lab 每次启动运行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 文件,这两个文件都是在启动调

相关文档
最新文档