MIT 6.S081/828 环境搭建/GDB调试+VScode
按照官方文档下载相关软件。最新xv6源码使用此架构qemu-system-riscv64。直接make qemu即可成功我们来看传给QEMU的几个参数:-kernel:这里传递的是内核文件(kernel目录下的kernel文件),这是将在QEMU中运行的程序文件。-m:这里传递的是RISC-V虚拟机将会使用的内存数量-smp:这里传递的是虚拟机可以使用的CPU核数-drive:传递的是虚拟机使用的
https://pdos.csail.mit.edu/6.828/2021/tools.html
按照官方文档下载相关软件。
最新xv6源码使用此架构qemu-system-riscv64。直接make qemu即可成功
我们来看传给QEMU的几个参数:
-kernel:这里传递的是内核文件(kernel目录下的kernel文件),这是将在QEMU中运行的程序文件。
-m:这里传递的是RISC-V虚拟机将会使用的内存数量
-smp:这里传递的是虚拟机可以使用的CPU核数
-drive:传递的是虚拟机使用的磁盘驱动,这里传入的是fs.img文件
其他架构:执行make qemu会报错找不到qemu。查看此版本xv6的Makefile,看使用何种版本qumu。
例如:
apt安装qemu-system-i386
重新make qumu成功。进入图形界面。使用ctrl+alt+q可退出。
在图形界面ctrl+alt+g使鼠标在ubuntu和qemu中切换。在非qemu图形界面中ctrl+alt x可正常退出qemu。
此命令进入非图形界面。
qemu-system-i386 -serial mon:stdio -drive file=fs.img,index=1,media=disk,format=raw -drive file=xv6.img,index=0,media=disk,format=raw -smp 2 -m 512 -nographic
调试
源码目录下make CPUS=1 qemu-nox-gdb/qemu-gdb进入qemu虚拟机
再开一个终端,gdb-multiarch
(gdb):target remote localhost:26000 连接gdb server
输入file user/_[execname]加载可执行文件
b:设置断点, c:执行到断点,n,s:单步执行,但s会step进函数 。start运行到main处,run直接执行程序。
可以输入tui enable来边debug边显示source code
可以输入layout asm显示汇编程序,输入layout reg显示寄存器
info breakpoints来显示关于断点的信息
vscode调试
源码目录下make CPUS=1 qemu-nox-gdb/qemu-gdb进入qemu虚拟机
vscode中配置好launch.json,启动调试(提前打好断点)
launch.json配置
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/kernel/kernel", //可执行程序
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "/usr/bin/gdb-multiarch", //使用的gdb路径
"miDebuggerServerAddress": "localhost:26000",//连接gebsever的ip和端口
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
},
]
}
更多推荐
所有评论(0)