CS61B – Lab 02~03 Debugging

调试,是开发流程中相当重要的一环,有了调试,我们可以解决 Fail,甚至在 Fail 之前找到 Error,分析 Error 并成功遏制它转化为我们不想看见的 Fail。这两项实验旨在教会我们如何使用 IntelliJ 进行各种必要的调试。

考虑到实际上调试的内容很简单,记录操作其实就是相当于提供答案,此处只考虑简要记录各阶段个人感觉可能有价值的点。

Bomb

这部分注意一下链表类 Intlist 的实现,就实而言他的构造方法挺有意思的,我们常规是指针维护 loc,但此处的整体构造是由递归实现的。不过也有弊端,比如安全性巨差…

  • Bomb0 直接调试就行
  • Bomb1 注意 equals 需要的类型,考虑当前类有没有什么方法能够对齐类型
  • Bomb2 是一个指定循环轮数的断点,也就是条件断点

BeeCountingStage

  • 注意一下野指针的产生原因,当前类的所有成员是否全部实例化了?
  • 我拉取的项目似乎最后的数组边界存在问题

SpeciesListStage

  • 边界处理
  • 另外似乎程序对你猜的数量计算的不对,不转类型进行整数除法导致你猜了也约等于没猜(

PalindromeStage

  • 我们真的反转完全部内容了么?

MachineStage

  • 一个神秘方法内的问题,一个方法调用上的问题
  • 两个无符号位运算写的挺有技巧,涉及到加法器的底层实现了

Puzzle

  • Runtime Exception 是合理的,一个避免空指针的 trick
  • 根据 ArrayindexOutOfBound Expection 就能很容易发的发现这是一个条件断点

以上

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注