环境部署
-
复制项目到本地
在目录6.828下面使用命令:git clone git://github.com/mit-pdos/xv6-public.git
将项目复制到本地。之后使用make
即可。 -
使用gdb调试
打开两个终端,都进入6.828/xv6-public目录下。第一个终端使用命令make qemu-gdb
,第二个使用命令gdb
[1]。在运行gdb的终端里面打断点0x10000c,输入c命令运行。并使用info reg
查看各寄存器值,使用x/24x $esp
查看栈里面的内容。
[1]:如果使用gdb调试的时候不成功,那么可以尝试在~/.gdbinit文件里面加入下面的内容:
add-auto-load-safe-path /home/(你的用户名)/6.828/xv6-public/.gdbinit
set auto-load safe-path /
栈内容解析
通过上面的调试,可以得到当指令执行到0x10000c处时,各寄存器的值为:
eax 0x0 0
ecx 0x0 0
edx 0x1f0 496
ebx 0x10074 65652
esp 0x7bdc 0x7bdc
ebp 0x7bf8 0x7bf8
esi 0x10074 65652
edi 0x0 0
eip 0x10000c 0x10000c
eflags 0x46 [ PF ZF ]
cs 0x8 8
ss 0x10 16
ds 0x10 16
es 0x10 16
fs 0x0 0
gs 0x0 0
栈里面的内容为:
0x7bdc: 0x00007d8d 0x00000000 0x00000000 0x00000000
0x7bec: 0x00000000 0x00000000 0x00000000 0x00000000
0x7bfc: 0x00007c4d 0x8ec031fa 0x8ec08ed8