ucore-lab1-练习2report

练习二实验报告

1.从CPU加电后执行的第一条指令开始,单步跟踪BIOS:
  1.1默认的gdb需要进行一些额外的配置才能进行qemu的调试任务,qemu和gdb之间使用网络端口1234进行通信。
lab1/tools/gdbinit的内容如下。可见,这里是对内核代码进行调试,并且将断点设置在内核代码的入口地址,即kern_init函数:
   
为了从CPU加电后执行的第一条指令开始调试,修改lab1/tools/gdbinit,内容为:
   
  1.2 通过上一个步骤gdb可以连接qemu,此时qemu会进入停止状态,听从gdb的命令。另外,可能需要qemu在一开始便进入等待模式,则不再使用make qemu开始系统的运行,而使用make debug来完成这项工作,并且将gdbinit中的‘continue’指令删掉。这样qemu便不会在gdb未连接的时候擅自运行了。在lab1目录下执行’make debug’ :
   
然后弹出qemu和debug窗口(在Makefile文件中定义):
   
但我这里在本应该显示反汇编代码的地方显示为‘??’,在网上查了之后觉得可能的原因是qemu和gdb不兼容,解决办法是在gdb中添加:
   
该命令可以强制反汇编当前ip所指向的指令,效果如下:
   
使用si指令单步执行一条机器指令,实现单步跟踪BIOS:
   
 
2.在初始化位置0x7c00设置实地址断点,测试断点正常:
在gdb中输入:‘b *0x7c00’       //设置断点
         ’c‘                //继续正在调试的程序
 
可以看到程序运行到0x7c00处停下来,并显示当ip指向的汇编指令--’cli‘。
 
3.从0x7c00开始跟踪代码运行,将单步跟踪反汇编得到的代码与bootasm.S和bootblock.asm进行比较:
在断点0x7c00处多次执行’x /10i $pc’    //查看后面10条汇编指令
   
发现在执行’bootmain‘之前的指令与bootasm.S和bootblock.asm中的指令一致。
 
4.自己找一个bootloader或内核中的代码位置,设置断点并进行测试:
4.1将gdbinit改成原来的命令,即对内核代码进行调试,并且将断点设置在内核代码的入口地址,即kern_init函数;
4.2执行’make debug‘;    //程序进入init.c中的kern_init()
4.3‘b cons_init’          //设置断点,这是初始化console的函数
’c‘                   //继续执行正在调试的程序
4.4遇到断点,在console.c程序的cons_init()函数处终止:

   
 

转载于:https://www.cnblogs.com/FrankChen831X/p/10596934.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 你可以使用ansible-playbook命令来运行项目练习中的剧本。根据引用\[1\]中的描述,你可以使用以下命令来运行剧本: ansible-playbook /home/devops/ansible/packages.yml 这个剧本将在dev、prod和test主机组中安装php和mariadb软件包,并在dev主机组中安装Development Tools包组,最后升级dev主机组中的所有软件包。另外,根据引用\[2\]中的描述,你还可以使用以下命令来运行另一个剧本: ansible-playbook /home/devops/ansible/internet.yml 这个剧本包含两个任务,第一个任务是在serverb.lab.example.com上安装firewalld、httpd、mariadb-server、php和php-mysqlnd软件包,并确保firewalld服务处于enabled和running状态,并允许访问httpd服务,同时确保httpd和Maria服务处于enabled和running状态。第二个任务是利用uri模块从控制节点测试serverb上运行web服务,检查返回状态代码200。所以,你可以使用以上命令来运行这两个剧本。 #### 引用[.reference_title] - *1* [ansible小练习【2】](https://blog.csdn.net/JohnnyG2000/article/details/124188654)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [ansible-playbook(剧本)练习题](https://blog.csdn.net/weixin_56105279/article/details/128041261)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [ansible playbook练习](https://blog.csdn.net/m0_53122419/article/details/121535493)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值