2010-08-06 12 views
12

En la documentación de la interfaz del depurador de Java para el Location class, hay un párrafo sobre el "estrato" de la ubicación. He estado buscando un poco más detalles sobre cómo se implementaría un nuevo estrato (por ejemplo, Scala o JRuby), pero no he encontrado mucho. ¿Alguien puede arrojar algo de luz sobre el tema?Implementar un estrato diferente para la interfaz del depurador de Java

+1

¿Has mirado las especificaciones de JSR-45 (Soporte de depuración para otros idiomas)? http://jcp.org/en/jsr/detail?id=45 – kschneid

+0

No tuve, no. Gracias por el puntero, eso ayuda bastante. – jfager

+0

Recuerdo vagamente que el archivo de clase tiene un atributo que apunta al archivo de origen. ¿Ha intentado simplemente establecerlo en un archivo en otro idioma? – Ramon

Respuesta

3

Strata no sería realmente apropiado para Scala o JRuby ya que se compilan directamente en bytecodes, por lo que los atributos SourceFile y LineNumberTable son suficientes. Los Strata están diseñados para cosas como JSP, que se traducen a un archivo fuente de Java y se compilan. Los estratos se definen mediante un mapa fuente (SMAP) almacenado en un atributo SourceDebugExtension. Los detalles de cómo funciona todo esto es parte de JSR-45. Otro ejemplo sería el State Machine Compiler aunque no creo que genere un SMAP. Tampoco estoy seguro si javac tiene una opción para incrustar el SMAP en el archivo de clase. Entonces necesitarías una herramienta separada para eso.

+0

De hecho, los números de línea no son lo suficientemente precisos para la dirección de código de bytes -> mapeo de posición de fuente para el código de Scala. Una determinada línea de código de Scala puede generar fácilmente muchos puntos de ruptura significativos, pero los depuradores actuales no pueden resolver su posición de origen dentro de dicha línea. –

Cuestiones relacionadas