【问题标题】:Scala IDE Debugger "step into" behaviorScala IDE 调试器“步入”行为
【发布时间】:2012-08-27 19:57:28
【问题描述】:

当前行为:

  • case Twice(n) ... 行放置一个断点。
  • 在“进入”时,控件转到x match {
  • 在“进入”时,控件转到def TwiceTest = {
  • 在进一步“进入”时,控件转到if (z % 2 == 0)... 行。

预期行为:

  • case Twice(n) ... 行放置一个断点。
  • “进入”时,控件转到if (z % 2 == 0)... 行。

代码片段

object testobj extends App {
  def TwiceTest = {
    val x = Twice(21)
    x match {
      case Twice(n) => Console.println(n)
    } // prints 21
  }

  TwiceTest

}

object Twice {
  def apply(x: Int): Int = x * 2
  def unapply(z: Int): Option[Int] = {
    if (z % 2 == 0) Some(z / 2) else None
  }
}

在调试具有大量嵌套提取器的 scala 程序时,当前的行为令人恼火。我用新的 Scala 调试器和 Java 调试器尝试了这个,但结果相同。

Step Filtering 在这种情况下也无济于事。

作为一种解决方法,我在unapply 方法中放置了一个断点,并从第一个断点运行resume。有人可以建议我一种更清洁的方法吗?

编辑 1 我正在使用 Scala-IDE(最新的夜间版本。2.1.0.nightly-2_09-201208250315-529cd70)

Eclipse 版本:Indigo Service Release 2 Build id:20120216-1857

操作系统:Windows 7(64 位)

【问题讨论】:

  • @om-nom-nom 我正在使用带有 Scala IDE 插件的 Eclipse Indigo
  • 我建议把这个发到scala-ide-user
  • @sschaef 我现在已经在 Scala-ide-user 组上发布了这个问题。但它在小组中尚不可见......可能正在经历审核阶段。
  • 该列表未经过审核。 Google 群组有时无法在 Web 界面中显示发送邮件。如果它出现在那里,过几个小时再看一遍。
  • @sschaef 我在用户组上重新发布了这个问题并收到了这个弹出消息。 Your topic has been created and will appear after it has been approved.

标签: debugging scala


【解决方案1】:

字节码中的行号信息错误。这不是 IDE 的问题,而是 Scala 编译器的问题。编译模式匹配时,合成代码有时会得到错误的位置信息。

我假设您使用的是 Scala 2.9.2。在 Scala 的下一个版本(2.10.0)中,模式匹配器有了显着的改进,所以不妨一试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-28
    • 2012-07-14
    • 2020-09-11
    相关资源
    最近更新 更多