深入学习XV6系统(2)

之前用gdb结合QEMU调试XV6,没怎么记录整理,这里总结一下:

///////////////////

环境

Win7+VBox+Ubuntu 14.04

source code 可以从下面地址拿到,如何编译上一节深入学习XV6系统(1)有讲到

git clone git://github.com/mit-pdos/xv6-public.git

////////////////////

如何debug xv6?

http://zoo.cs.yale.edu/classes/cs422/2011/lec/l2-hw

我是按照以上Yale的课程的方法: GDB+QEMU, 简单的step就是:

1)cd 到xv6代码目录,这里假定xv6已编译

2)make qemu-gdb

深入学习XV6系统(2)_第1张图片

这时候QEMU启动但是XV6还木有跑起来QEMU在等待gdb的指示boot xv6。

注意红框里面的值是26000TCP端口号

3)再开一个terminal, cd 到xv6代码目录: gdb kernel

4)这里比较关键了,gdb和qemu如何交互的具体原理上面Yale课程里面的链接有介绍, 简单的理解是gdb通过socket同qemu进行通讯。

如何建立socket连接使用gdb的命令 

target remote localhost:26000

localhost是主机名, 26000是端口号,这些信息在2)的输出中可以找到

这样就建立了连接

打上断点:b exec,然后一路c(continue)下去, Xv6就跑起来了

深入学习XV6系统(2)_第2张图片

深入学习XV6系统(2)_第3张图片

深入学习XV6系统(2)_第4张图片

一直等到$出现, 就说明xv6 ready了,可以敲命令调试了, 比如b fork, 然后xv6的界面输入ls


注意: yale链接里面的代码有可能编译不过,至少在我这里是,这样比较麻烦,所以用mit的链接的git repo比较安全

以上


你可能感兴趣的:(深入学习XV6系统(2))