《实验一实验环境的使用.docx》由会员分享,可在线阅读,更多相关《实验一实验环境的使用.docx(13页珍藏版)》请在三一办公上搜索。
1、实验一实验环境的使用上海应用技术学院 程序设计语言实验报告 实验名称 实验环境的使用 姓 名 专 业 计算机科学与技术 实验序号 学 号 班 级 实验一 实验日期 指导教师 成 绩 一、实验目的及要求 1、熟悉操作系统集成实验环境OS Lab的基本使用方法。 2、练习编译、调试EOS操作系统内核以及EOS应用程序。 二、实验环境 Windows XP;Tevation OS Lab。 三、实验内容 1 启动OS Lab 2 学习OS Lab的基本使用方法 2.1 新建Windows控制台应用程序项目 1、新建一个Windows控制台应用程序项目的步骤如下: 在“文件”菜单中选择“新建”,然后单
2、击“项目”。 在“新建项目”对话框中,选择项目模板“控制台应用程序 (c)”。 在“名称”中输入新项目使用的文件夹名称“oslab”。 在“位置”中输入新项目保存在磁盘上的位置“C:Test”。 点击“确定”按钮,结果如图1所示。 图1 2、创建完毕后 OS Lab 会自动打开这个新建的项目。在“项目管理器”窗口中,树的根节点表示项目,可以看到项目的名称是“console”,各个子节点是项目包含的文件夹或者文件。此项目的源代码主要包含一个头文件“console.h”和一个C语言源文件“console.c”,如图2所示。 图2 2.2 生成项目 在“生成”菜单中选择“生成项目”。在项目的生成过程
3、中,“输出”窗口会实时显示生成的进度和结果。如果源代码中不包含语法错误,会在最后提示生成成功,如图3所示。 图3 2.3 执行项目 在OS Lab中选择“调试”菜单中的“开始执行(不调试)”,就可以执行此控制台应用程序。启动执行后会弹出一个Windows控制台窗口,显示控制台应用程序输出的内容。按任意键即可关闭此控制台窗口,结果如图4。 图4 2.4 调试项目 1、调试功能之前,对例子程序进行必要的修改,步骤如下: 右键点击“项目管理器”窗口中的“源文件”文件夹节点,在弹出的快捷菜单中 选择“添加”中的“添加新文件”。 在弹出的“添加新文件”对话框中选择“C 源文件”模板。 在“名称”中输入文
4、件名称“func”。 点击“添加”按钮添加并自动打开文件func.c,此时的“项目管理器”窗口如图 5所示。 图5 2、在 func.c 文件中添加函数: int Func (int n) n = n + 1; return n; 3、点击源代码编辑器上方的console.c标签,切换到console.c文件。将 main 函数修改为: int main (int argc, char* argv) int Func (int n); / 声明Func函数 int n = 0; n = Func(10); printf (Hello World!n); return 0; 4、代码修改完毕后按
5、F7。注意查看“输出”窗口中的内容,如果代码中存在语法错误,就根据提示进行修改,直到成功生成项目,结果如图6所示。 图6 2.4.1 使用断点中断执行 1、在main函数中定义变量n的代码行 int n = 0; 上点击鼠标右键,在弹出的快捷菜单中选择“插入/删除断点”,如图7。 图7 2、在“调试”菜单中选择“启动调试”,Windows控制台应用程序开始执行,随后OS Lab窗口被自动激活,并且在刚刚添加断点的代码行左侧空白中显示了一个黄色箭头,表示程序已经在此行代码处中断执行,如图8。 图8 3、激活Windows控制台应用程序的窗口如图9,可以看到窗口中没有输出任何内容,因为printf
6、函数还没有被执行。 图9 2.4.2 单步调试 1、在OS Lab的“调试”菜单中选择“逐过程”,“逐过程”功能会执行黄色箭头当前指向的代码行,并将黄色箭头指向下一个要执行的代码行,如图10。 图10 2、按F10,黄色箭头就指向了调用printf函数的代码行。查看控制台应用程序窗口,仍然没有任何输出,如图11。 图11 3、再次按F10执行printf函数,查看控制台应用程序窗口,可以看到已经打印出了内容,如图12。 图12 4、仔细体会“逐过程”调试功能后,在“调试”菜单中选择“停止调试”,结束此次调试。 5、按照下面的步骤练习使用“逐语句”功能和“跳出”功能: 按F5,仍然会在之前设置的
7、断点处中断。 按F10逐过程调试,此时黄色箭头指向了调用函数Func的代码行。 在“调试”菜单中选择“逐语句”,可以发现黄色箭头指向了函数Func中,说明“逐语句”功能可以进入函数来调试函数中的语句。 选择“调试”菜单中的“跳出”,会跳出Func函数,返回到上级函数中继续调试。 按SHIFT+F5,结束此次调试。 2.4.3 查看变量的值 1、在调试的过程中,OS Lab提供了三种查看变量值的方法,按照下面的步骤练习这些方法: 按F5启动调试,仍然会在之前设置的断点处中断。 将鼠标移动到源代码编辑器中变量n的名称上,此时会弹出一个窗口显示出变量n当前的值。 在源代码编辑器中变量n的名称上点击鼠
8、标右键,在弹出的快捷菜单中选择“快速监视”,可以使用“快速监视”对话框查看变量n的值。点击“关闭”按钮关闭“快速监视”对话框,如图13。 图13 2、在源代码编辑器中变量n的名称上点击鼠标右键,在弹出的快捷菜单中选择“添加监视”,变量n就被添加到了“监视”窗口中。使用“监视”窗口可以随时查看变量的值和类型。此时按F10进行一次单步调试,可以看到“监视”窗口中变量n的值会变为0,如图14-15: 如图14 如图15 2.4.4 调用堆栈 使用“调用堆栈”窗口可以在调试的过程中查看当前堆栈上的函数,帮助理解函数的调用层次和调用过程。按照下面的步骤练习使用“调用堆栈”窗口: 按F5启动调试,仍然会在
9、之前设置的断点处中断。 选择“调试”菜单“窗口”中的“调用堆栈”,激活“调用堆栈”窗口。可以看到当前“调用堆栈”窗口中只有一个main函数,如图16。 图16 按F11调试进入Func函数,查看“调用堆栈”窗口可以发现在堆栈上有两个函数Func和main,其中当前正在调试的Func函数在栈顶位置,main函数在栈底位置。说明是在main函数中调用了Func函数。在“调用堆栈”窗口中双击main函数所在的行,会有一个绿色箭头指向main函数所在的行,表示此函数是当前调用堆栈中的活动函数。同时会将main函数所在的源代码文件打开,并也使用一个绿色箭头指向Func函数返回后的位置,如图17。 图17
10、 在“调用堆栈”窗口中双击Func函数所在的行,可以重新激活此堆栈帧,并显示对应的源代码。 反复双击“调用堆栈”窗口中Func函数和main函数所在的行,查看“监视”窗口中变量n的值,可以看到在不同的堆栈帧被激活时,OS Lab调试器会自动更新“监视”窗口中的数据,显示出对应于当前活动堆栈帧的信息。 结束此次调试。 3 EOS内核的编译和调试 之前练习了对Windows控制台应用程序项目的各项操作,对EOS内核项目的各项操作与对Windows控制台项目的操作是完全一致的。所以,下面实验内容的重点不再是各种操作的具体步骤,而应将注意力放在对EOS操作系统内核项目的理解上。 3.1 新建EOS内核
11、项目 1、新建一个EOS内核项目的步骤如下: 在“文件”菜单中选择“新建”,然后单击“项目”。 在“新建项目”对话框中,选择项目模板“EOS Kernel”。 在“名称”中输入新项目使用的文件夹名称“eos”。 在“位置”中输入新项目保存在磁盘上的位置“C:”。 点击“确定”按钮,结果如图18。 图18 此项目就是一个EOS操作系统内核项目,包含了EOS操作系统内核的所有源代码文件。 2、接下来在“项目管理器”窗口中查看EOS内核项目包含的文件夹和源代码文件,可以看到不同的文件夹包含了EOS操作系统不同模块的源代码文件,例如“mm”文件夹中包含了内存管理模块的源代码文件,“boot”文件夹中包
12、含了软盘引导扇区程序和加载程序的源代码文件如图19。 图19 3.2 生成项目 1、按F7生成项目,同时查看“输出”窗口中的内容,确认生成成功。 2、打开C:eosdebug文件夹,查看生成的对象文件和目标文件。找到boot.bin、loader.bin和kernel.dll三个二进制文件,这三个文件就是EOS操作系统在运行时需要的可执行文件。OS Lab每次启动运行EOS操作系统之前,都会将这三个文件写入一个软盘镜像文件中,然后让虚拟机运行这个软盘镜像中的EOS。找到libkernel.a文件,此文件是EOS内核文件kernel.dll对应的导入库文件如图20。 图20 3.3 调试项目 1
13、、在“项目管理器”窗口的ke文件夹中找到start.c文件节点,双击此文件节点使用源代码编辑器打开start.c文件如图21。 图21 在start.c文件中KiSystemStartup函数的“KiInitializePic;”语句所在行添加一个断点。 2、按F5启动调试,虚拟机开始运行软盘镜像中的EOS。在虚拟机窗口中可以看到EOS启动的过程。随后EOS会在刚刚添加的断点处中断执行,激活虚拟机窗口可以看到EOS也不再继续运行了。各种调试功能的使用方法与调试Windows控制台程序完全相同,可以自己练习。 3、按F5继续执行。查看虚拟机窗口,显示EOS操作系统已经启动,并且EOS的控制台程序
14、已经开始运行了。 4、在“调试”菜单中选择“停止调试”,调试被终止。如图22。 图22 3.4 查看软盘镜像文件中的内容 在“项目管理器”窗口中双击软盘镜像文件Floppy.img,就会使用FloppyImageEditor工具打开此文件(在FloppyImageEditor工具中按F1可以查看此工具的帮助文件)。在FloppyImageEditor工具的文件列表中可以找到loader.bin文件和kernel.dll文件,这两个文件都是在启动调试时被写入软盘镜像文件的。boot.bin文件在启动调试时被写入了软盘镜像的引导扇区中,不受软盘文件系统的管理,所以在文件列表中找不到此文件。关闭Fl
15、oppyImageEditor工具。 3.5 查看EOS SDK文件夹 1、点击OS Lab工具栏上的“项目配置”下拉列表,选择下拉列表中的“Release”项目配置,“Release”项目配置被设置为新的活动项目配置。 2、按F7使用Release配置生成项目。如图23。 图23 3、生成完毕后,使用Windows资源管理器打开C:eos文件夹,可以发现在文件夹中多出了一个SDK文件夹,此文件夹就是在生成EOS Kernel项目的同时自动生成的如图24。 图24 4、SDK文件夹中提供了开发EOS应用程序需要的所有文件。打开SDK文件夹中的bin文件夹,可以看到有两个名称分别为debug和r
16、elease的文件夹如图25。debug文件夹是在使用debug配置生成项目时生成的,其中存放了调试版本的EOS二进制文件。release文件夹是在使用release配置生成项目时生成的,其中存放了发布版本的EOS二进制文件。分别打开这两个文件夹查看其中包含的文件。 图25 5、打开SDK文件夹中的inc文件夹如图26,可以看到此文件夹中存放了EOS用于导出API函数和重要数据类型定义的头文件,在编写EOS应用程序时必须包含这些头文件。 图26 4 EOS应用程序的编译和调试 4.1 新建EOS应用程序项目 新建一个EOS内核项目的步骤如下: 在“文件”菜单中选择“新建”,然后单击“项目”。
17、在“新建项目”对话框中,选择项目模板“EOS 应用程序”。 在“名称”中输入新项目使用的文件夹名称“eosapp”。 在“位置”中输入新项目保存在磁盘上的位置“C:”。 点击“确定”按钮。如图27。 此项目就是一个EOS应用程序项目。使用Windows资源管理器将之前生成的C:eossdk文件夹拷贝覆盖到C:eosappsdk位置。这样EOS应用程序就可以使用最新版本的EOS SDK文件夹了。 图27 4.2 生成项目 1、按F7生成项目,同时查看“输出”窗口中的内容,确认生成成功。 2、打开C:eosappdebug文件夹,查看生成的对象文件和目标文件。其中的eosapp.exe就是EOS应
18、用程序的可执行文件。OS Lab每次启动EOS应用程序时,都会将EOS应用程序的可执行文件写入软盘镜像,并且会将SDK文件夹中对应配置的二进制文件写入软盘镜像,然后让虚拟机运行软盘镜像中的EOS,待EOS启动后再自动执行EOS应用程序。 4.3 调试项目 1、按F5启动调试。OS Lab会弹出一个调试异常对话框,选择“是”调试异常,EOS应用程序会中断执行,黄色箭头指向下一个要执行的代码行。 2、在eosapp.c的 printf(Hello world!n); 代码行添加一个断点,然后按F5继续调试,在此断点处中断。 3、按F10单步调试,查看虚拟机窗口,打印输出了“Hello world!
19、”。 4、按F5继续调试,查看虚拟机窗口,EOS应用程序执行完毕。 5、在“调试”菜单中选择“停止调试”,调试被终止。 6、选择“调试”菜单中的“删除所有断点”。只有删除所有断点后才能按F5再次启动调试,否则启动调试会失败。如图28-29。 图28 图29 4.4查看软盘镜像文件中的内容 使用FloppyImageEditor工具打开该项目中的Floppy.img文件,查看软盘镜像中的文件。loader.bin和kernel.dll是从C:eosappsdkbindebug文件夹写入的,C:eosappsdkbindebugboot.bin被写入了软盘镜像文件的引导扇区中。eosapp.exe
20、就是本项目生成的EOS应用程序。EOS操作系统启动后会根据autorun.txt文本文件中的内容启动执行eosapp.exe程序,双击autorun.txt文件查看其内容。 5 退出OS Lab 1、在“文件”菜单中选择“退出”。 2、在OS Lab关闭前会弹出一个保存数据对话框,核对学号和姓名无误后点击“保存”按钮,OS Lab关闭。 3、在OS Lab关闭后默认会自动使用Windows资源管理器打开数据文件所在的文件夹,并且选中刚刚保存的数据文件。 6 保存EOS内核项目 1、使用OS Lab重新打开之前创建的EOS内核项目。在“起始页”的“最近的项目”列表中会有内核项目的快捷方式。 2.
21、使用Debug配置生成此项目。再此启动调试此项目后结束调试,从而制作包含Debug版本EOS操作系统的软盘镜像文件。 3、将此项目复制到自己的计算机中。注意,项目在磁盘中的位置不能改变,例如实验中此项目在C:eos位置,就必须复制到自己计算机中的C:eos位置。 4、在自己的计算机中安装OS Lab演示版,使用演示版程序阅读EOS源代码,或者调试EOS源代码。 四、实验结果与分析 通过本次实验基本掌握了下面几方面的内容 1、Tevation OS中项目创建;项目生成;项目执行;项目调试:断点中断执行、单步调试、查看变量的值、调用堆栈。 2、EOS内核的编译和调试:新建EOS内核项目;生成项目;调试项目;查看软盘镜像文件中的内容;查看EOS SDK文件夹。 3、EOS应用程序的编译和调试:新建EOS应用程序项目; 生成项目; 调试项目;查看软盘镜像文件中的内容。 4、退出OS Lab;保存EOS内核项目。