全球旧事资料 分类
or中选择“文件”菜单中的“保存”后关闭FloppyImageEditor。4)按F7生成EOS应用项目。5)按F5启动调试。OSLab会弹出一个调试异常对话框,并中断应用程序的执行。6)在调试异常对话框中选择“否”,忽略异常继续执行应用程序。7)激活虚拟机窗口,待该应用程序执行完毕后,在EOS的控制台中输入命令“AHelloexe”后回车。8)Helloexe应用程序开始执行,观察其输出
5
f9)待Helloexe执行完毕后可以重复第7步,或者结束此次调试。
(2)按照下面的步骤查看应用程序创建另一个应用程序的进程的执行结果:
1)使用NewProcc文件中的源代码替换之前创建的EOS应用程序项目中的EOSAppc文件内的源代码。2)按F7生成修改后的EOS应用程序项目。3)按F5启动调试。OSLab会首先弹出一个调试异常对话框。4)在调试异常对话框中选择“否”,继续执行。5)激活虚拟机窗口查看应用程序输出的内容,可以看到父进程(EOSAppexe)首先开始执行并输出内容,父进程创建了子进程(Helloexe)后,子进程开始执行并输出内容,待子进程结束后父进程再继续执行。6)结束此次调试
(3)按照下面的步骤调试CreateProcess函数创建进程的过程:
1)按F5启动调试EOS应用程序,OSLab会首先弹出一个调试异常对话框。2)选择“是”调试异常,调试会中断。3)在mai
函数中调用CreateProcess函数的代码行(第57行)添加一个断点。4)按F5继续调试,在断点处中断。5)按F11调试进入CreateProcess函数。此时已经开始进入EOS内核进行调试,
(4)按照下面的步骤来分别验证应用程序和操作系统内核在进程的4G虚拟地址空间中所处的位置:
1)由于此时在内核的CreateProcess函数内中断执行,所以在“调试”菜单的“窗口”中选择“反汇编”,会在“反汇编”窗口中显示CreateProcess函数的指令对应的反汇编代码。“反汇编”窗口的左侧显示的是指令所在的虚拟地址。可以看到所有指令的虚拟地址都大于0x80000000,说明内核(ker
eldll)处于高2G的虚拟地址空间中。
6
f2)在“调用堆栈”窗口中双击mai
函数项,设置mai
函数的调用堆栈帧为活动的。在“反汇编”窗口中查看mai
函数的指令所在的虚拟地址都是小于0x80000000,说明应用程序(eosappexe)处于低2G的虚拟地址空间中。
3)在“调用堆栈”窗口中双击CreateProcess函数项,重新设置CreateProcess函数的调用堆栈帧为活动的。关闭“反汇编”窗口。
4)接下来观察eosapic文件中CreateProcess函数的源代码,可以看到此函数只是调用了EOS内核函数PsCreateProcess并将创建进程所用到的参数传递给了此函数。所以,按F11可以r
好听全球资料 返回顶部