xv6 2020版使用gdb调试debug的方法

本文参考了MIT 6.S081 2020 操作系统 实验环境搭配详解及问题处理,作者为余晨(北海草鱼)。xv6的安装方法见Windows/Ubuntu qemu虚拟机xv6-riscv利用riscv-gnu-toolchain编译安装方法。该方法适用于Ubuntu上搭建的riscv版的xv6的QEMU虚拟机,其他网上的方法大多不适用于此。

首先切到xv6-labs-2020目录下,切到例如util分支(branch)上,执行

make clean && make qemu-gdb

注意2020版的Makefile文件中提供的是qemu-gdb选项,不是qemu-nox-gdb选项。

注意这里打开的TCP端口是26000。另开一个Terminal窗口,切到xv6-labs-2020目录下,切到util分支,执行

riscv64-unknown-elf-gdb kernel/kernel

然后在(gdb)环境下执行

(gdb) target remote localhost:26000

不过可以按如下操作简化:在~目录下新建.gdbinit文件,内容为:

add-auto-load-safe-path ~/xv6-labs-2020/.gdbinit

其中~改为自己的xv6-labs-2020目录所在路径。仍返回xv6-labs-2020目录util分支,执行

riscv64-unknown-elf-gdb

即可:

在(gdb)环境中执行

(gdb) b exec

显示

Breakpoint 1 at 0x80004b0c: file kernel/exec.c, line 14.

然后执行

(gdb) c

c是continue的缩写,也可缩写为co或cont。显示

Continuing.
[Switching to Thread 1.3]

Thread 3 hit Breakpoint 1, exec (path=path@entry=0x3fffffdf00 "/init", 
    argv=argv@entry=0x3fffffde00) at kernel/exec.c:14
14    {

另一个窗口中显示

xv6 kernel is booting

hart 1 starting
hart 2 starting

再执行c,显示

Continuing.
[Switching to Thread 1.1]

Thread 1 hit Breakpoint 1, exec (path=path@entry=0x3fffffbf00 "sh", 
    argv=argv@entry=0x3fffffbe00) at kernel/exec.c:14
14    {

另一个窗口显示

init: starting sh

再执行c,显示

Continuing.

另一个窗口显示

$

即可输入命令调试。如果想调试特定的文件例如xargs.c,则在一开始启动gdb后执行

(gdb) file user/_xargs
(gdb) b main
(gdb) c

然后一直c下去,步骤同上:

 

  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
要在 CodeBlocks 中使用 GDB 调试器,您可以按照以下步骤操作: 1. 确保您已经安装了 GDB 调试器。您可以在终端中运行 `gdb --version` 命令来检查是否已安装。 2. 打开 CodeBlocks,并在菜单栏中选择 "Settings"(设置)-> "Debugger"(调试器)。 3. 在 "Selected debugger"(选择调试器)下拉菜单中选择 "GNU GCC Compiler"(GNU GCC 编译器)。 4. 在 "Debugger settings for selected compiler"(选择编译器的调试器设置)面板上,找到 "Executable path"(可执行文件路径)字段,并点击右侧的 "..." 按钮。 5. 在弹出的对话框中,浏览并选择您的 GDB 可执行文件所在的路径。通常情况下,它位于 `/usr/bin/gdb` 或 `/usr/local/bin/gdb`。 6. 确保 "Start from"(开始位置)字段设置为 "GDB/CDB debugger"。 7. 在同一面板上,将 "Additional GDB commands"(额外的 GDB 命令)字段设置为 `-q`。这将禁止显示 GDB 的详细信息,只显示与调试相关的内容。 8. 点击 "OK" 保存更改。 现在,您可以开始使用 GDB 调试器来调试您的代码。请按照以下步骤操作: 1. 在 CodeBlocks 中打开您的项目。 2. 在左侧的工具栏中,找到 "Debug"(调试)按钮,并点击它。或者,您还可以使用快捷键 F8 来启动调试。 3. 当您的程序开始运行时,您可以使用 GDB 提供的调试功能。例如,您可以设置断点、单步执行、查看变量的值等等。 4. 在调试过程中,CodeBlocks 的底部将显示 GDB 的输出和调试信息。您可以在这里查看程序的运行状态和变量的值。 希望这些步骤对您有所帮助!
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ayka

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值