您当前的位置:首页 > 计算机 > 编程开发 > Other

自己动手写一个操作系统——MBR(3)_调试

时间:11-21来源:作者:点击数:
城东书院 www.cdsy.xyz

前言

前面我们讲到,BIOS 会将 MBR 加载到内存的 0x7c00 处运行,我们如何验证呢?那就是通过 GDB 调试。

image

上篇文章中编译出的 mbr.img 内容如下

$ hexdump -C output/mbr.img 
00000000  eb fe 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
00000200

gdb

我们使用 gdb 调试,在内存地址 0x7c00 处打个断点,当 CPU 执行到这个地址时就会暂停。

然后查看内存 0x7c00 开始的 512 字节数据

(gdb) b *0x7c00
Breakpoint 1 at 0x7c00
(gdb) target remote :1234
Remote debugging using :1234
warning: No executable has been specified and target does not support
determining executable automatically.  Try using the "file" command.
0x0000fff0 in ?? ()
(gdb) c
Continuing.

Breakpoint 1, 0x00007c00 in ?? ()
(gdb) x/512xb 0x7c00
0x7c00: 0xeb    0xfe    0x00    0x00    0x00    0x00    0x00    0x00
0x7c08: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7c10: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7c18: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7c20: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7c28: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7c30: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7c38: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7c40: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
--Type <RET> for more, q to quit, c to continue without paging--c
0x7c48: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7c50: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7c58: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7c60: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7c68: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7c70: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7c78: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7c80: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7c88: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7c90: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7c98: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ca0: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ca8: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7cb0: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7cb8: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7cc0: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7cc8: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7cd0: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7cd8: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ce0: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7ce8: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7cf0: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7cf8: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7d00: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7d08: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7d10: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7d18: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7d20: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7d28: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7d30: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7d38: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7d40: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7d48: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7d50: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7d58: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7d60: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7d68: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7d70: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7d78: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7d80: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7d88: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7d90: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7d98: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7da0: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7da8: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7db0: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7db8: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7dc0: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7dc8: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7dd0: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7dd8: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7de0: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7de8: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7df0: 0x00    0x00    0x00    0x00    0x00    0x00    0x00    0x00
0x7df8: 0x00    0x00    0x00    0x00    0x00    0x00    0x55    0xaa

发现从 0x7c00 开始的 512 字节内容和 mbr.bin 文件内容相同。说明 BIOS 已经识别到我们编写的 MBR,并且已经将 MBR 加载到了内存的 0x7c00 处,并且跳转到了 0x7c00 处开始运行。

城东书院 www.cdsy.xyz
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐