0xb*_*7ed 6 java annotations jvmti
Java类文件格式支持称为“源调试扩展名”的属性(请参见Java语言规范§4.7.11“ SourceDebugExtension
属性”)。
在支持JVMTI这方面的JVM中,您可以使用来查询此字符串jvmtiError GetSourceDebugExtension(jvmtiEnv *, jclass, char **)
。
我的问题是,是否存在一种使用普通javac
语言和Java语言将“源调试扩展”信息嵌入.class
文件的方法。核心Java语言中似乎没有可以执行此操作的注释(的javadocjava.lang.Annotation
的“所有已知的实现类”列表中没有明显的候选者)。
JSR 45添加了该属性以支持非 Java 语言的调试。JVM 本身不使用该属性的值;它用于调试工具。该 JSR 的最终版本描述了该属性的动机,SourceDebugExtension
如下所示:
源调试扩展支持
调试器应用程序经常需要有关源的调试信息,这些信息超出了现有 JavaTM 虚拟机类文件属性(SourceFile、LineNumber 和 LocalVariable)所提供的信息。对于调试其他语言的源代码尤其如此。在分布式环境中,侧文件可能无法访问,信息必须直接与类关联。
解决方案是添加一个包含字符串的类文件属性;该字符串包含标准化格式的调试信息,允许演进和供应商扩展。
鉴于此目的,javac 不太可能在该字段中放入任何内容。还有另一个 StackOverflow 问题询问哪些 JVM 语言使用 SMAP 属性。
归档时间: |
|
查看次数: |
313 次 |
最近记录: |