2010-08-06 30 views
12

Location class的Java調試器接口文檔中,有一段討論該位置的「層」。我一直在尋找更多關於如何實現一個新階層(比如說Scala或JRuby)的細節,但我沒有找到太多的東西。任何人都可以談談這個話題?爲Java調試器接口實現不同的層

+1

你看過JSR-45(調試支持其他語言)的規範嗎? http://jcp.org/en/jsr/detail?id=45 – kschneid 2010-08-09 16:46:22

+0

我沒有,沒有。感謝指針,這有助於很多。 – jfager 2010-08-12 01:32:14

+0

我依稀記得,類文件有一個指向源文件的屬性 - 你有沒有試過將它設置爲另一種語言的文件? – Ramon 2010-08-22 12:22:38

回答

3

Strata實際上並不適合Scala或JRuby,因爲它們直接編譯爲字節碼,所以SourceFile和LineNumberTable屬性就足夠了。 Strata專門用於像JSP這樣的東西,它們被翻譯成Java源文件並編譯。地層由存儲在SourceDebugExtension屬性中的源地圖(SMAP)定義。所有這些工作的細節都是JSR-45的一部分。另一個例子是State Machine Compiler,雖然我不相信它會生成一個SMAP。我也不確定javac是否有將SMAP嵌入到類文件中的選項。那麼你需要一個單獨的工具。

+0

實際上,對於字節碼地址 - > Scala代碼的源位置映射,行號不夠精確。給定的Scala代碼行可以很容易地產生許多有意義的斷點,但當前的調試器無法在這樣的行內解析它們的源位置。 – 2010-09-17 04:10:13