gpt4 book ai didi

jvm - 自定义 JVM 语言 : Creating workable stack traces?

转载 作者:行者123 更新时间:2023-12-04 02:29:02 25 4
gpt4 key购买 nike

JVM 上的堆栈跟踪如何工作?

是否可以将类文件转换为具有与父语言相关的堆栈跟踪,而不是伪 java 文件?

具体来说,这个 Mixin Library https://github.com/SpongePowered/Mixin进行修改,以便在将代码覆盖/注入(inject)方法时,如果发生错误,它将指向源中正确的 mixin 伪类?

最佳答案

根本不需要 Java 源代码文件。

只有两个相关的属性。

  • SourceFile class 属性,指定源代码文件的名称,不必是 .java文件。
  • LineNumberTable 应用于 Code 的属性属性,说明字节码指令如何映射到源代码行。

  • 堆栈跟踪仅报告类和方法名称以及源文件名和行号,如上面提到的两个属性所报告的。它背后没有额外的语义。

    这些属性已经足以进行单步调试,因为调试器只需要加载指定的文件(假设它是基于文本的)并突出显示特定的行。我已经以这种方式单步执行了一个 XSLT 文件,该文件已被 XSLT 处理器动态编译为字节码。如果要使局部变量可检查,还必须添加 LocalVariableTable 代码的属性。

    我还使用它们来生成代码,其元信息指向触发代码生成的原始代码。甚至在编译普通 Java 源代码时也会发生这种情况,因为为 lambda 表达式生成的合成方法具有指向定义它的源代码级方法中的 lambda 表达式的行号表。

    关于jvm - 自定义 JVM 语言 : Creating workable stack traces?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44895716/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com