XV6環境搭建及注意事項
Ubuntu16.04SLT 64位
工具鏈
sudo apt-get install gcc-multilib
libsdl1.2-dev, libtool-bin, libglib2.0-dev, libz-dev, and libpixman-1-dev.
下載lab進行make編譯
下載qemu進行編譯
git clone http://web.mit.edu/ccutler/www/qemu.git -b 6.828-2.3.0
編譯的時候首先需要指定目錄
./configure --disable-kvm [--prefix=PFX] [--target-list="i386-softmmu x86_64-softmmu"]
PFX為指定的目錄
然後 make && make install
在lab的GNUmakefile需要修改QEMU的路徑
可以通過命令make qemu啟動
啟動非圖形介面,可以使用make qemu-nox
離開介面使用 Ctrl+a x
除錯作業系統(開兩個視窗)
make qemu-gdb (or make qemu-nox-gdb).
In the second terminal, from the same directory you ran make
現在就可以除錯了,使用si進行單步除錯
BootLoader開始執行的地方You can set address breakpoints in GDB with the b command. For example, b *0x7c00
記得修改配置
將下面的語句放到/home/kexinxin/.gdbinit
add-auto-load-safe-path /home/kexinxin/6.828/xv6-public-test/.gdbinit
替換為xv6的路徑
注意預設只能除錯核心程式碼,要除錯使用者程式碼需要在gdb中使用語句file _filename,以除錯sh.c為例
file _sh
這樣的話就不能除錯核心程式碼,只能除錯使用者程式碼,要切換回去的話,使用
file kernel
注意來回切換的時候斷點會被清除,因此需要重新設定斷點。