vscode调试mit6s081Lab

2023-12-05

环境

  • mit6.s081的实验环境
  • gdb-multiarch(用于gdb调试,vscode调试实质上就是提供个图形化页面,底层还是这个)
// 安装 gdb-multiarch
sudo apt-get install gdb-multiarch

大家好,我叫徐锦桐,个人博客地址为 www.xujintong.com ,github地址为 https://github.com/xjintong 。平时记录一下学习计算机过程中获取的知识,还有日常折腾的经验,欢迎大家访问。

配置

首先终端输入 make qemu-gdb ,项目根目录产生一个 .gdbinit 文件。

image-20231203144927931

点开这个文件,然后记住画线的那个端口号,我这里是 25000 (你的可能不一样), 然后删除画横线的这行

image-20231203145159081

vscode调试会用到个 launch.json 文件。

image-20231203145338636

launch.json 文件配置如下:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "debug xv6",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/kernel/kernel",
            "args": [],
            "stopAtEntry": true,
            "cwd": "${workspaceFolder}",
            "miDebuggerServerAddress": "localhost:25000",
            "miDebuggerPath": "/usr/bin/gdb-multiarch",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "pretty printing",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "logging": {
                // "engineLogging": true,
                // "programOutput": true,
            }
        }
    ]
}

这个配置文件有两个需要改的地方。一个是 miDebuggerServerAddress 这一项需要把端口改为 .gdbinit 文件中的那个端口号。第二个是 miDebuggerPath 这里,要填成自己gdb-multiarc的位置(ubuntu应该默认就是这个位置)。

调试流程

  • 1、终端输入 make qemu-gdb
  • 2、按 F5 进入调试,它会跳到kernel的main函数。

image-20231203150826935

  • 2、在调试控制台,输入 -exec file user/_sleep (这里是个例子,表示切换到sleep.c的符号表),输出 Reading symbols from user/_sleep 表示成功了。前面加上 -exec 表示这个gdb命令。

    image-20231203150352939

  • 3、然后就可以在 sleep.c 文件中打断点了,断点是红色的表示打成功了。

image-20231203151029814

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vscode调试mit6s081Lab 的相关文章

  • Netbeans 9/10/11 无法运行程序“cmd”

    我将 NetBeans 11 解压缩到C netbeans 安装了几个版本的JDKC java并在 NetBeans 中创建一个测试类 其中包含一个 main 方法和一行代码System out print hello world 当我点击
  • Netbeans IDE 项目窗口中的跟踪文件

    刚刚开始使用 NetBeans 8 0 2 想知道 IDE 是否具有与 Eclipse 或 Visual Studio 类似的功能 在项目资源管理器中跟踪当前文件 在处理大型项目时 打开大量文件 如果我想导航到项目窗口中的当前文件 这会变得
  • 如何在 Eclipse 中使用 PHPdoc

    我们目前正处于一个新项目的开始阶段 希望 这一次 从一开始就尽可能多地发表评论 以帮助未来的发展 我试图找出在 Eclipse 中使用 phpDoc 的最佳实践 但结果非常有限 您能分享一下在 Eclipse 中使用 phpDoc 注释内容
  • Linux 上的 C++ IDE [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在 IntelliJ 14 中从临时文件运行代码?

    我创建了一个简单的 Java 临时文件 其中包含一个名为 测试泛型 包含一些代码和main方法 代码似乎没问题 但是当我尝试运行它时 通过右键单击 gt 运行 TestGenerics main 我收到此错误 未指定模块 包含 Lua 代码
  • 在android中添加横向方向和代码的最简单方法

    我是新来的android并想知道如何添加landscape模式在android谁能告诉我最简单的方法 我正在寻找一种非常简单的方法 如果您有此类问题 请查看下面的答案 谢谢 I have a simplest way to add a la
  • Go测试调试

    有没有办法使用像 IntelliJ 这样的 IDE 来调试 Go 中的测试 我正在使用 IntelliJ 的 Go 插件 似乎在提供调试配置时 调试按钮被禁用 It is 可能在 Gogland 1 0 预览版 Build EAP 12 1
  • 如何在 Visual Studio 的输出窗口中隐藏异常类型?

    我正在测试一些东西 输出窗口中充满了异常 如何过滤输出窗口中显示的异常类型 Note 在这种情况下 不可能避免异常 据我所知 隐藏异常类型是不可能的 但要过滤掉所有异常消息 请右键单击输出窗口并取消选中 异常消息
  • 在“打开资源”对话框中键入内容时,是否可以通过目录而不是仅通过文件名来查找文件?

    I have been using extensively Ctrl Shift to find and open files in my Eclipse project But sometimes I know the directory
  • Visual Studio 2012 - “添加”上下文菜单的项模板

    我成功创建新的项模板并将其添加到 Visual Studio 2012 现在我可以使用右键单击来创建新项目 解决方案资源管理器 添加 新项目 dialog But how I can add this Item Template to ap
  • 包 android.support.v4.app 不存在;在Android Studio 0.8中

    我最近将 android studio IDE 更新至 0 8 以与新的 android L SDK 配合使用 首先 我导入了一个已完成的 android 项目 该项目在旧版本的 android studio 中没有收到任何错误 在版本 0
  • Google Apps 脚本是否支持外部 IDE?

    我正在使用 Google Apps 脚本 想知道是否可以使用 Google 提供的编辑器之外的任何类型的编辑器 我购买了 Sublime Text 并且想使用它 Google 提供的那个很恶心 文本很小 尽管我有一个巨大的屏幕和语法颜色 我
  • 如何在 Eclipse 中运行具有 main() 的单个 Java 文件,而不创建整个 Java 项目?

    这是我所得到的 我有一个TestFile java具有相同的类名 这个类有一个有效的main method 该文件可以通过终端使用 javac 和 java 轻松运行 给出预期的输出 但是 当我将文件拖放到 或打开 到 Eclipse 中并
  • 如何清除“运行”->“参数”菜单中的“参数”字段?

    我正在使用 CodeGear RAD Studio IDE 为了使用命令行参数测试我的应用程序 我多次使用 运行 gt 参数 菜单中的 参数 字段 但每次我为它提供一个新值时 它都无法从 下拉框 中删除 我需要清理这个字段 删除所有值 因为
  • 如何在 IDE 中使用 Grails 依赖项

    So I finally https stackoverflow com questions 1867064 grails and local maven dependencies让我的依赖项与 Grails 一起工作 现在 我的 IDE
  • 免费的 C 语言 IDE? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 谷歌搜索 c ide C 会产生太多 C 结果以及不相关的结果 这些搜索词似乎太短 无法产生相关结果 有人有免费的 Win32 C IDE
  • 如何在 Intellij Idea 12 中重命名/移动项目?

    就像声明的那样here http link sheidaei com mozcw人们可以更改项目的名称 但是 它仅更改项目名称 不会更改文件夹结构 例如 如果您的项目名为sample1并且位于 user1 development IdeaP
  • 如何在 IDE 中输入提示上下文?

    我在用Closure call http php net manual en closure call php http php net manual en closure call php 在类上下文中调用外部闭包 这是一个简单的重现 c
  • 在 Eclipse 中突出显示修改的行

    在 netbeans 中 如果我打开一个受版本控制的文件 则修改的行会在左侧突出显示 绿色表示新行 蓝色表示修改行 在Eclipse中是否可以得到类似的效果 打开首选项窗口 搜索 差异 选择快速差异 将 使用此参考源 更改为 SCM 提供程
  • Emacs:在缓冲区求值期间将参数传递给下级 Python shell

    最近我开始使用 Emacs 作为 Python IDE 它不太直观 我现在遇到的问题是当使用 C c C c 评估缓冲区时如何将命令行参数传递给下级 python shell 感谢帮助 这似乎并不容易实现 管理的劣质流程python el模

随机推荐

  • 光环云与亚马逊云科技成功举办“合作伙伴成长峰会:赋能与共赢”活动

    光环云作为由光环新网和西云数据所提供的亚马逊云科技中国区域推广计划的授权增值推广商 致力于帮助中国企业更加方便 高效 安全地享受亚马逊云科技云服务 加速数字化转型 2023年11月29日 光环云携手亚马逊云科技和商礼科技成功举办 合作伙伴成
  • Linux 编译安装colmap

    COLMAP可以作为独立的app 通过命令行或者图形交互界面使用 也可以作为一个库被包含到其他源代码中 这里记录一下编译安装colmap的过程 首先需要安装好CUDA CUDA具体安装过程这里就不赘述了 在GitHub上下载源代码 我这里就
  • VIM使用快捷键快速移动到某个位置

    光标移动到行首 行首没有空格 光标移动到行首 行首有空格 数字0 光标移动到行尾 移动到指定行 7G 数字加一个大G 光标移动到文件开始 gg 两个小g 光标移动到文件末尾 G 一个大G 窗口向上滚动一行 Ctrl e scroll up
  • mapbox实现点选要素

    成果图 核心代码 核心逻辑就是指定一个唯一的高亮要素对象 全图监听点击事件 通过queryRenderedFeatures鼠标点拿到要素的id 然后将要素的状态改为选中 这样选中的要素的样式就会改为我们设置好的选中的样式 记住这个高亮对象
  • Gazebo 中为地面和车轮添加摩擦属性

    Gazebo 中为地面和车轮添加摩擦属性 Link friction properties not applied from URDF to Gazebo SDFormat Specification Adding friction to
  • 无尘车间等级划分标准

    在制造业 医药行业 食品行业等领域中 无尘车间是一个非常重要的组成部分 无尘车间能够提供清洁 高度控制的环境 有利于产品质量的提高和生产过程的优化 SICOLAB喜格 将详细介绍无尘车间的等级划分标准 包括其定义 方法和重要性 一 无尘车间
  • Matlab中文注释在Linux中乱码解决

    Linux for Matlab中文注释乱码 Linux for Matlab中文注释乱码 亲测有效 中文注释乱码的原因是windows下的m文件采用的是gbk编码 只要将所有的m文件转成 utf8文件 显示就正常了 查看支持的语言 enc
  • Linux系列-1 Linux启动流程——init与systemd进程

    背景 最近对所有项目完成了一个切换 服务管理方式由 init gt systemd 对相关知识进行总结一下 1 启动流程 服务器的整体启动流程如下图所示 POST 计算机通电后进行POST Power On Self Test 加电自检 检
  • C#8.0本质论第十六章--使用查询表达式的LINQ

    C 8 0本质论第十六章 使用查询表达式的LINQ 像SQL这样的专业查询语言虽然容易阅读和理解 但又缺乏C 语言的完整功能 这正是C 语言设计者在C 3 0中添加 查询表达式 语法的原因 本章大部分都类似于SQL 一般不会使用到 在用到的
  • python能用来做什么?这3大主要用途你一定要知道!(实用)_python能做什么

    导读 如果你想学Python 或者你刚开始学习Python 那么你可能会问 我能用Python做什么 这个问题不好回答 因为Python有很多用途 但是随着时间 我发现有Python主要有以下三大主要应用 Web开发 数据科学 包括机器学习
  • 无尘车间装修要符合哪些要求

    无尘车间装修是工业生产中非常重要的一环 它能够提供高度洁净的生产环境 保证产品在生产过程中的质量和安全性 因此 无尘车间的装修设计必须符合一系列要求 以确保其使用效果和性能达到最佳状态 SICOLAB喜格 将详细介绍无尘车间装修要符合哪些要
  • 学会Python怎么找兼职?

    当今收入低于5000的人至少占到40 完全不够养活一家人 而且很多小伙伴其实空余时间比较多 特别是大学生 零花钱又不够花 都想靠业余时间找点轻松的活增加收入 但是缺没门路 为此结合我多年编程开发经验 总结了几种用Python赚外快的方法 最
  • Mybatis简介

    1 MyBatis历史 MyBatis最初是Apache的一个开源项目iBatis 2010年6月这个项目由Apache Software Foundation迁移到了Google Code 随着开发团队转投Google Code旗下 iB
  • 光纤和光模块的那点事儿

    你们好 我的网工朋友 应该不少朋友在工作中会遇到光纤传输布线的活吧 不得不说 会遇上的问题还挺多 比如说 光纤收发器怎么接上不亮 光纤收发器和交换机插光模块能不能搭配使用 带光口的球机可以和交换机搭配使用吗 这些你都懂多少 这篇文章 和你聊
  • Python系列:如何提高python程序代码的健壮性

    概要 在编程的时候 我们难免会遇到一些不可靠的情况 比如网络请求失败 数据库连接超时等等 这些不确定性会让我们的程序容易出现各种错误和异常 那么如何来增加程序的容错性和健壮性呢 可能大多数人会想到使用try except来进行异常捕捉进行失
  • 牙髓干细胞实验室建设

    科技的不断进步 干细胞研究已经逐渐成为生物医学领域的研究热点 其中 牙髓干细胞因其独特的生物特性和巨大的应用潜力 受到了越来越多科学家的关注 SICOLAB喜格 为了满足这一研究需求 牙髓干细胞实验室的建设显得尤为重要 一 牙髓干细胞实验室
  • 压缩docker在主机的虚拟磁盘容量

    我们在windows里使用docker时会发现 即使我们已经删除了无用的镜像和容器 主机里挂在docker虚拟磁盘的那个盘 可用空间也没有增加 这是因为虚拟磁盘不会自动缩小 这里我分享一个可用的解决方案 1 先通过docker回收空间 do
  • 使用Draw.io制作泳道图

    使用Draw io制作泳道图 一 横向泳道图 1 有标题泳道图 2 无标题泳道图 3 横纵向扩展泳道 二 纵向泳道图
  • 大火的占用网络究竟如何落地?国内首个面向工业级占用网络全栈教程!

    2022年9月的Tesla AI Day上 一种称之为Occupancy Network的占用模型突然出现到大家的视野中 轻语义重几何 更好地辅助自动驾驶系统感知Driverable space 自动驾驶在动静态障碍物感知领域的发展大概分为
  • vscode调试mit6s081Lab

    环境 mit6 s081的实验环境 gdb multiarch 用于gdb调试 vscode调试实质上就是提供个图形化页面 底层还是这个 安装 gdb multiarch sudo apt get install gdb multiarch