为Java调试器接口实现不同的层

jfa*_*ger 12 java debugging scala jruby jdi

Location类的Java Debugger Interface文档中,有一个段落讨论了该位置的"层".我一直在寻找更多有关如何实现新层(例如,Scala或JRuby)的细节,但我没有找到太多.任何人都可以对这个话题有所了解吗?

Geo*_*edy 3

Strata 并不真正适合 Scala 或 JRuby,因为它们直接编译为字节码,因此 SourceFile 和 LineNumberTable 属性就足够了。Strata 适用于 JSP 之类的内容,这些内容被转换为 Java 源文件并进行编译。这些层由存储在 SourceDebugExtension 属性中的源映射 (SMAP) 定义。这一切如何工作的详细信息是JSR-45的一部分。另一个例子是状态机编译器,尽管我不相信它会生成 SMAP。我也不确定 javac 是否有在类文件中嵌入 SMAP 的选项。然后您需要一个单独的工具来完成此操作。