目录

参考:

0.系统要求:

1.下载源码

下载源码

看到shell即代表ok

退出方法

2.compile_commands.json生成:便于调试

makefile的生成方法:安装compiledbhttps://github.com/nickdiego/compiledb.git

Cmake的生成方法

3. xv6的Makefile修改

关于  .gdbinit

4. 调试内核

开两个Terminal

此时,在xv6-riscv目录下,执行make qemu-gdb ,进程会阻塞.

配置.gdbinit让其在gdb启动的时候生效

5. 在vscode调试

配置tasks.json--->Terminal--->configure default build tasak

配置launch.json[用于调试]

如果一切顺利:将会这样


从零开始使用Vscode调试XV6 - 知乎

https://github.com/Aneureka/xv6-riscv

书籍介紹 | xv6 中文文档

Chapter 1: Operating System Interfaces - 知乎

0.系统要求:

一天时间的教训---系统要ubuntu20.04的 ,用ubuntu18.04的搞了一天

1.下载源码

学习资源:Xv6 代码导读 (调试工具配置;调试系统调用执行) [南京大学2022操作系统-P18]_哔哩哔哩_bilibili

下载源码

  • git clone https://github.com/mit-pdos/xv6-riscv.git
  • cd xv6-riscv
  • 安装依赖

sudo apt install binutils-riscv64-linux-gnu
sudo apt install gcc-riscv64-linux-gnu
sudo apt install gdb-multiarch
sudo apt install qemu-system-misc u-boot-qemu qemu-utils

  • 报错:
a725@ubuntu:~/Desktop/xv6/xv6-riscv$ make qemu
qemu-system-riscv64 -machine virt -bios none -kernel kernel/kernel -m 128M -smp 1 -nographic -drive file=fs.img,if=none,format=raw,id=x0 -device virtio-blk-device,drive=x0,bus=virtio-mmio-bus.0
make: qemu-system-riscv64: Command not found
Makefile:164: recipe for target 'qemu' failed
make: *** [qemu] Error 127
解决方案:249  wget https://download.qemu.org/qemu-5.1.0.tar.xz251  tar -xvf qemu-5.1.0.tar.xz 253  cd qemu-5.1.0/275  ./configure --target-list=riscv64-softmmu,riscv64-linux-user276  sudo make -j8277  sudo make install然后终端 输入 qemu-system-risv6 --version能打印即算ok

看到shell即代表ok

a725@ubuntu:~/Desktop/xv6/xv6-riscv$ make qemu
qemu-system-riscv64 -machine virt -bios none -kernel kernel/kernel -m 128M -smp 1 -nographic -drive file=fs.img,if=none,format=raw,id=x0 -device virtio-blk-device,drive=x0,bus=virtio-mmio-bus.0xv6 kernel is bootinginit: starting sh
$ ls
.              1 1 1024
..             1 1 1024
README         2 2 2226
cat            2 3 23896
echo           2 4 22720
forktest       2 5 13016
grep           2 6 27256
init           2 7 23816
kill           2 8 22696
ln             2 9 22648
ls             2 10 26144
mkdir          2 11 22800
rm             2 12 22784
sh             2 13 41792
stressfs       2 14 23792
usertests      2 15 156240
grind          2 16 37992
wc             2 17 25000
zombie         2 18 22168
console        3 19 0
$

退出方法

在 xv6 中按 Ctrl + a ,然后按 x 即可退出 xv6 系统。

2.compile_commands.json生成:便于调试

makefile的生成方法:安装compiledbhttps://github.com/nickdiego/compiledb.git

  1. 针对makefile:   安装compiledb【git clone https://github.com/nickdiego/compiledb.git】来自动生成compile_commands.json

  2. sudo python3 setup.py install
  3. sh-completion/compiledb.bash文件的内容添加到.bashrc文件中。
  4. 然后在 xv6目录下 compiledb make 即可 ,可看到生成的 compile_commands.json

Cmake的生成方法

  • 如果用CMAKE,加上参数DCMAKE_EXPORT_COMPILE_COMMANDS即可生成
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=True ..

3. xv6的Makefile修改

  • 修改xv6文件夹的Makefie 的 -smp 为1 便于调试
  • 看Makefile来理解整个kernel的编译过程

make | less 或者 make | vim -

  • Makefile的宏定义不能定义到 vscode

bear make ,让 vscode的宏生效

关于  .gdbinit

  • gdb里面又gdb intit的配置,避免重复输入命令

4. 调试内核

开两个Terminal

  • 此时,在xv6-riscv目录下,执行make qemu-gdb ,进程会阻塞.

  • 另开一个终端,在xv6-riscv目录下,执行gdb-multiarch kernel/kernel

配置.gdbinit让其在gdb启动的时候生效

按上图红色部分修改

5. 在vscode调试

配置tasks.json--->Terminal--->configure default build tasak


{"version": "2.0.0","tasks": [{"label": "xv6build","type": "shell","isBackground": true,"command": "make qemu-gdb","problemMatcher": [{"pattern": [{"regexp": ".","file": 1,"location": 2,"message": 3}],"background": {"beginsPattern": ".*Now run 'gdb' in another window.","endsPattern": "."}}],"group": {"kind": "build","isDefault": true}}]
}

配置launch.json[用于调试]

注意:由于有 "miDebuggerServerAddress": "127.0.0.1:26000", //所以需要吧.gdbinit 中 target remote xxxx:xx改为

@REM target remote xxxx:xx

// xv6-riscv/.vscode/launch.json
{"version": "0.2.0","configurations": [{"name": "xv6debug","type": "cppdbg","request": "launch","program": "${workspaceFolder}/kernel/kernel","stopAtEntry": true,"cwd": "${workspaceFolder}","miDebuggerServerAddress": "127.0.0.1:26000", //见.gdbinit 中 target remote xxxx:xx"miDebuggerPath": "/usr/bin/gdb-multiarch", // which gdb-multiarch"MIMode": "gdb","preLaunchTask": "xv6build"}]
}

如果一切顺利:将会这样

从零开始使用Vscode调试XV6相关推荐

  1. 【OS xv6】1 万字详解shell源码解析命令(内含wsl+vscode调试xv6教程 文档第一章助读)

    现在前面的 嘻嘻几百年没写文了确实没时间,等搞完毕设可以一起重温重温.最近学os,读源码发现还挺多东西得整理的,尤其途中有必要找资料整理的时候,内容有点多有点乱,写在源码已经显得不现实了.用的vsco ...

  2. 使用VS Code 从零开始开发并调试.NET Core 应用程序

    使用VS Code 从零开始开发并调试.NET Core 应用程序,C#调试.上一篇 使用VS Code开发 调试.NET Core 应用程序 得到了大家的支持. 现在为大家带来从零开始教程,让你更好 ...

  3. vscode emmet默认模板_从零开始配置 vscode

    我们在进行开发工作时,选择一个顺手好用的编辑器是必不可免的, 其中 vscode 就是一个很好的选择.它能让你大部分的工作都在编辑器内完成, 大大的提高开发效率~ 概述 vscode 内置了前端相关的 ...

  4. 使用 vscode 调试前端代码

    使用 vscode 调试前端代码 今天我们以webpack项目为基础讲解配置 复制代码 1. 安装插件 Debugger for Chrome 2. 修改 config/index.js 将devto ...

  5. (004)RN开发VSCode调试ReactNative项目

    1. 添加配置文件 点击小蜘蛛后,按第一步.第二步操作即可 接着选择调试平台☑️下面四个.点击OK,会生成一个launch.json文件并打开. 2. 添加断点 接下来,我们回到DEDUG,点击右边的 ...

  6. 使用vscode调试Nodejs

    之前想用vscode调试nodejs,总是不成功,也走很多弯路,现在记录下来. 首先新建一个文件夹,用vscode打开这个文件夹, 用vscode自带的终端执行npm init,输入名称,其他的可不输 ...

  7. ubuntu下vscode调试开发踩过的坑

    最近刚过安装了中文版的ubuntu18.04.1,安装完之后想在ubuntu上安装vscode做c/c++的开发调试,踩了不少坑,在此记录一下,希望大家在这条路上不要再踩同样的坑. 1.安装vscod ...

  8. vscode 调试_如何使用VSCode调试JS?

    更多精彩,请点击上方蓝字关注我们! 序言 做前端开发的朋友经常需要使用Visual Studio Code编辑代码,很多朋友就想在VSCode调试JS代码,下面我们就介绍下如何配置操作. 一.环境准备 ...

  9. VSCode 调试 Egg 完美版 - 进化史 #25

    VSCode 调试 Egg 完美版 - 进化史 #25 背景 VSCode 早期版本,对 Node Cluster 的调试支持一直不是很友好,譬如: 开发期重启进程后,不支持重新 attach. Cl ...

  10. Mac 配置vscode调试PHP

    Mac系统版本:MacOS Mojave  10.14.5 vscode:1.36.0 MacOS Mojave  10.14.5 系统自带 PHP 7.1.23 1.开启php sudo vim / ...

最新文章

  1. mysql 2006测试_狂神说MySQL06:事务和索引
  2. springcloud 错误: 找不到或无法加载主类
  3. 剑指Offer_61_序列化二叉树
  4. 数据结构--栈 codevs 1107 等价表达式
  5. jQuery的实现原理和核心
  6. 我是买家项目随想-展望2011
  7. 我来了,我看见了,我征服了
  8. 微信公众号开发:消息处理
  9. DB2数据库添加 更改字段
  10. nginx工作原理与配置
  11. socat使用指南:3:5种常见的使用方法
  12. Linux-C 文件操作
  13. Power query (Power BI)一步到位傻瓜式合并工作簿,史上最好用
  14. 文科生都能看得懂的贝叶斯定理,从白袜到飞机失事再到人工智能
  15. linux bin目录在哪,Linux 基础知识 /bin,/sbin,/usr/sbin,/usr/bin 目录 区别详解
  16. 有点甜用计算机怎么谈,有点甜造句
  17. Android Room 数据库使用记录
  18. 流量不清零:还在忽悠广大网民?
  19. 好好学习,天天向上------融会贯通
  20. Word文档怎样翻译?Word文档翻译方法大分享

热门文章

  1. 吐血推荐HZHControls:我见过最美的Winform控件库
  2. Linux命令行下WEP密码破解(通用,也可非BT平台)
  3. Diffusion model—扩散模型
  4. UI Maker,界面设计sample
  5. Android MTK TP Driver 触屏驱动
  6. GNS3 添加思科交换机
  7. 计算机五笔是什么时候学的吗,电脑五笔打字入门口诀(5分钟就能学会五笔)...
  8. 苹果系统模拟器_全球首款 iOS 模拟器来袭:免费得一台苹果手机!
  9. 如何突破网盘限速?获取下载链接的三种方法
  10. Anylogic学习--------------数学函数