为Java Debugger Interface实现不同的分层

12
在Java调试器接口文档中的Location类中,有一个段落讨论了位置的“层”,我一直在寻找更多关于如何实现新层(例如Scala或JRuby)的详细信息,但是我没有找到太多。是否有人可以对这个主题进行解释?

1
你看过JSR-45(其他语言的调试支持)的规范了吗?http://jcp.org/en/jsr/detail?id=45 - kschneid
我没有,谢谢你的指针,这帮了我很多。 - jfager
我模糊地记得类文件有一个指向源文件的属性 - 你是否尝试将其设置为另一种语言的文件? - Ramon
1个回答

3

对于Scala或JRuby来说,Strata并不是特别适合,因为它们直接编译成字节码,因此SourceFile和LineNumberTable属性就足够了。Strata适用于像JSP这样的东西,它们被翻译成Java源文件,然后再进行编译。这些Strata是由一个存储在SourceDebugExtension属性中的源映射(SMAP)定义的。所有这些工作的详细信息都是JSR-45的一部分。JSR-45。另一个例子是状态机编译器,不过我不认为它会生成一个SMAP。我也不确定javac是否有选项可以将SMAP嵌入到类文件中。如果需要的话,您需要使用单独的工具来完成这个任务。


事实上,对于Scala代码的字节码地址->源位置映射而言,行号不够精确。 给定的Scala代码行可以轻松产生许多有意义的断点,但当前的调试器无法解析它们在该行内的源位置。 - Randall Schulz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接