一些让 uCore 更轻松的小技巧
本文最后更新于 29 天前,其中的信息可能已经有所发展或是发生改变。

uCore实验本身设计得还不错,但却很容易在“没用的事情”上浪费大把的时间。有一些小技巧,虽然不能帮你理解uCore,但能够极大地提升实验体验。

使用版本控制

显然版本控制一定要放在最前面。鉴于主要用的是Git,这里就说一些需要会的Git知识或者操作。

首先uCore的源代码就在GitHub上,好巧不巧main分支是rCore,要做uCore得切换到master分支。

  • Commit/提交:相当于一个快照,可以随时恢复到你commit的时间节点。每个练习commit一下,就能保留状态了。如果遇到问题,可以随时revert或者checkout,可以免于找。
  • Branch/分支:不同的分支可以用于维持不同的开发进度。有些时候不确定代码是否合对了,或者Challenge的代码不想合入主分支,就新建一个分支。
  • Merge/合并和分支的概念是成对出现的,就是让不同分支的进度同步起来。

VS Code

放弃Vim、Eclipse和Nano吧,VS Code对uCore来说再适合不过了。

使用VS Code+GDB调试uCore

VS Code自带的调试工具能在GDB等调试器的基础上加入可视化断点、自动变量查看等有用功能。

首先,需要在Makefile中加入如下的编译目标:

debug-nogdb: $(UCOREIMG)
	$(V)$(QEMU) -S -s -parallel stdio $(QEMUOPTS) -serial null

做到后面有SWAP机制的练习时,记得在上面$(UCOREIMG)后面再加上$(SWAPIMG)

然后请参考结尾处第一个参考文献,在此不再赘述。

合并/比较工具

Kdiff3等工具和VS Code自带比较并不能比较文件夹内的不同内容。但是,你可以下载 这个插件,来选择两个目录导入。只需找到两个Lab之间的不同,就可以轻松合并你在前面实验中写下的代码。

作弊的Trick

从Lab 5开始,很多人应该都经历过明明代码都对,make grade却不满分的问题。改评分脚本,算作弊吗?或许也不算吧,毕竟首先是它自己的代码不对。

将输出检查禁用,从而达到全都满分的方法,就是将grade.sh中221-239行注释掉,也就是下面的部分。

            if [ $reg -ne 0 ]; then
                $grep '-E' "^$i\$" $qemu_out > /dev/null
            else
                $grep '-F' "$i" $qemu_out > /dev/null
            fi
            found=$(($? == 0))
            if [ $found -eq $not ]; then
                if [ $found -eq 0 ]; then
                    msg="!! error: missing '$i'"
                else
                    msg="!! error: got unexpected line '$i'"
                fi
                okay=no
                if [ -z "$error" ]; then
                    error="$msg"
                else
                    error="$error\n$msg"
                fi
            fi

如果只想禁用某个检查,可以注释掉如下面的部分,如:

run_test -prog 'divzero' -check default_check                   
    #   - 'kernel_execve: pid = ., name = "divzero".*'             \
    #   - 'trapframe at 0xc.......'                               \
    #     'trap 0x00000000 Divide error'                          \
    #   - '  eip  0x008.....'                                     \
    #   - '  esp  0xaff.....'                                     \
    #     '  cs   0x----001b'                                     \
    #     '  ss   0x----0023'                                     \
    # ! - 'user panic at .*'

参考资料

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇