从零开始使用Vscode调试XV6
目录
参考:
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
针对makefile: 安装compiledb【git clone https://github.com/nickdiego/compiledb.git】来自动生成compile_commands.json
- sudo python3 setup.py install
- 将
sh-completion/compiledb.bash
文件的内容添加到.bashrc
文件中。- 然后在 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相关推荐
- 【OS xv6】1 万字详解shell源码解析命令(内含wsl+vscode调试xv6教程 文档第一章助读)
现在前面的 嘻嘻几百年没写文了确实没时间,等搞完毕设可以一起重温重温.最近学os,读源码发现还挺多东西得整理的,尤其途中有必要找资料整理的时候,内容有点多有点乱,写在源码已经显得不现实了.用的vsco ...
- 使用VS Code 从零开始开发并调试.NET Core 应用程序
使用VS Code 从零开始开发并调试.NET Core 应用程序,C#调试.上一篇 使用VS Code开发 调试.NET Core 应用程序 得到了大家的支持. 现在为大家带来从零开始教程,让你更好 ...
- vscode emmet默认模板_从零开始配置 vscode
我们在进行开发工作时,选择一个顺手好用的编辑器是必不可免的, 其中 vscode 就是一个很好的选择.它能让你大部分的工作都在编辑器内完成, 大大的提高开发效率~ 概述 vscode 内置了前端相关的 ...
- 使用 vscode 调试前端代码
使用 vscode 调试前端代码 今天我们以webpack项目为基础讲解配置 复制代码 1. 安装插件 Debugger for Chrome 2. 修改 config/index.js 将devto ...
- (004)RN开发VSCode调试ReactNative项目
1. 添加配置文件 点击小蜘蛛后,按第一步.第二步操作即可 接着选择调试平台☑️下面四个.点击OK,会生成一个launch.json文件并打开. 2. 添加断点 接下来,我们回到DEDUG,点击右边的 ...
- 使用vscode调试Nodejs
之前想用vscode调试nodejs,总是不成功,也走很多弯路,现在记录下来. 首先新建一个文件夹,用vscode打开这个文件夹, 用vscode自带的终端执行npm init,输入名称,其他的可不输 ...
- ubuntu下vscode调试开发踩过的坑
最近刚过安装了中文版的ubuntu18.04.1,安装完之后想在ubuntu上安装vscode做c/c++的开发调试,踩了不少坑,在此记录一下,希望大家在这条路上不要再踩同样的坑. 1.安装vscod ...
- vscode 调试_如何使用VSCode调试JS?
更多精彩,请点击上方蓝字关注我们! 序言 做前端开发的朋友经常需要使用Visual Studio Code编辑代码,很多朋友就想在VSCode调试JS代码,下面我们就介绍下如何配置操作. 一.环境准备 ...
- VSCode 调试 Egg 完美版 - 进化史 #25
VSCode 调试 Egg 完美版 - 进化史 #25 背景 VSCode 早期版本,对 Node Cluster 的调试支持一直不是很友好,譬如: 开发期重启进程后,不支持重新 attach. Cl ...
- 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 / ...
最新文章
- mysql 2006测试_狂神说MySQL06:事务和索引
- springcloud 错误: 找不到或无法加载主类
- 剑指Offer_61_序列化二叉树
- 数据结构--栈 codevs 1107 等价表达式
- jQuery的实现原理和核心
- 我是买家项目随想-展望2011
- 我来了,我看见了,我征服了
- 微信公众号开发:消息处理
- DB2数据库添加 更改字段
- nginx工作原理与配置
- socat使用指南:3:5种常见的使用方法
- Linux-C 文件操作
- Power query (Power BI)一步到位傻瓜式合并工作簿,史上最好用
- 文科生都能看得懂的贝叶斯定理,从白袜到飞机失事再到人工智能
- linux bin目录在哪,Linux 基础知识 /bin,/sbin,/usr/sbin,/usr/bin 目录 区别详解
- 有点甜用计算机怎么谈,有点甜造句
- Android Room 数据库使用记录
- 流量不清零:还在忽悠广大网民?
- 好好学习,天天向上------融会贯通
- Word文档怎样翻译?Word文档翻译方法大分享
热门文章
- 吐血推荐HZHControls:我见过最美的Winform控件库
- Linux命令行下WEP密码破解(通用,也可非BT平台)
- Diffusion model—扩散模型
- UI Maker,界面设计sample
- Android MTK TP Driver 触屏驱动
- GNS3 添加思科交换机
- 计算机五笔是什么时候学的吗,电脑五笔打字入门口诀(5分钟就能学会五笔)...
- 苹果系统模拟器_全球首款 iOS 模拟器来袭:免费得一台苹果手机!
- 如何突破网盘限速?获取下载链接的三种方法
- Anylogic学习--------------数学函数