2010-08-06 1 views
12

В документации интерфейса Java Debugger для Location class есть параграф, в котором обсуждается «страта» местоположения. Я немного оглянулся, чтобы узнать больше о том, как можно было бы реализовать новый слой (скажем, Scala или JRuby), но я не нашел многого. Может ли кто-нибудь пролить свет на эту тему?Внедрение различной страты для интерфейса Java Debugger

+1

Вы просмотрели спецификацию для JSR-45 (отладка поддержки других языков)? http://jcp.org/en/jsr/detail?id=45 – kschneid

+0

У меня не было, нет. Спасибо за указатель, который помогает совсем немного. – jfager

+0

Я смутно помню, что в файле класса есть атрибут, указывающий на исходный файл - попробовали ли вы просто установить это на файл на другом языке? – Ramon

ответ

3

Strata не подходит для Scala или JRuby, поскольку они скомпилированы непосредственно в байт-коды, поэтому атрибутов SourceFile и LineNumberTable достаточно. Strata предназначены для таких вещей, как JSP, которые переводятся в исходный файл Java и скомпилированы. Страты определяются исходной картой (SMAP), хранящейся в атрибуте SourceDebugExtension. Детали того, как все это работает, являются частью JSR-45. Другим примером может быть State Machine Compiler, хотя я не верю, что он генерирует SMAP. Я также не уверен, имеет ли javac возможность встраивания SMAP в файл класса. Для этого вам понадобится отдельный инструмент.

+0

На самом деле номера строк недостаточно точны для адреса байт-кода -> сопоставление исходных позиций для кода Scala. Данная строка кода Scala может легко дать много значимых точек останова, но текущие отладчики не могут решить свою исходную позицию в такой строке. –

Смежные вопросы