VScode+GDB调试xv6-risc5源码
·
废话一箩筐:在VScode上配置GDB调试源码,网上的教程一大箩筐,本来不想写的。但是我自己在运行的时候,出现了在VScode上通过registers看寄存器值的时候,程序就会“崩溃”的情况。所以还是来记录一下。
一、准备工作
按照我刚刚废话里的描述,我猜想可能是因为自己本地的GDB版本太旧,所以准备更新一下版本,后面看来也确实是这个问题。
我本地的环境如下:
Ubuntu 20.04 + VS Code + GDB 9.2 (咱们需要把版本更新到更新的,我选择了gdb-15.2)
执行以下命令安装gdb-15.2。
# 安装依赖项
sudo apt install libgmp-dev libmpfr-dev
# 从网站上下载对应版本的源码
wget http://ftp.gnu.org/gnu/gdb/gdb-15.2.tar.gz
# 开始编译安装
tar -xzvf gdb-15.2.tar.gz
cd gdb-15.2
# 请注意,要加上--enable-targets=all参数,不然只能编译出gdb,不能编译出gdb-multiarch
./configure --prefix=/usr/local/gdb-15.2 --with-python --enable-targets=all
make -j8
sudo make install
编译安装成功后,我们来检查一下生成物和gdb版本信息:
二、在VS Code中使用GDB调试
Step1:按照如下内容配置.vscode/launch.json文件
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug xv6-kernel",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/../kernel/kernel",
"miDebuggerPath": "/usr/local/gdb-15.2/bin/gdb",
"miDebuggerServerAddress": "localhost:26000",
"args": [],
"stopAtEntry": true,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set architecture to RISC-V",
"text": "set architecture riscv",
"ignoreFailures": false
}
],
"logging": {
"engineLogging": false
}
}
]
}
Step2:到自己xv6-riscv的路径下,执行以下命令
$ make qemu-gdb
*** Now run 'gdb' in another window.
qemu-system-riscv64 -machine virt -bios none -kernel kernel/kernel -m 128M -smp 1 -nographic -global virtio-mmio.force-legacy=false -drive file=fs.img,if=none,format=raw,id=x0 -device virtio-blk-device,drive=x0,bus=virtio-mmio-bus.0 -S -gdb tcp::26000
执行以上命令后,终端就停住了,等待gdb的连接。
Step3:VS code中,到[Run and Debug]面板,点击调试按钮,或者直接按F5。开始进行调试。
启动后,代码就停留在了代码入口处,自己可以添加断点啦,并且这时我们也能从面板中直接看到寄存器值啦。
完结撒花!✿✿ヽ(°▽°)ノ✿
希望能帮到看到这篇笔记的YOU,祝开心~~
更多推荐


所有评论(0)