有没有办法从标签偏移量获取行号(如在java文件中)?
@Override
public void visitLabel(Label label){
super.visitLabel(label);
mv.visitFieldInsn(GETSTATIC, "java/lang/System", "out",
"Ljava/io/PrintStream;");
mv.visitLdcInsn("line " + label.getOffset() + " executed");
mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println",
"(Ljava/lang/String;)V", false);
}
我已经覆盖了MethodVisitor中的visitLabel方法,以便在访问每个标签时打印lebel.getOffset。我得到一些整数值,但它们与 java 文件中的行号不同。
最佳答案
您需要创建自定义映射。每个行号都引用标签进行访问,并且每个标签按照其出现的顺序进行访问。您需要:
- 记住每个引用行号的标签。
- 检查是否有任何标签的行号是所访问的标签之前的最新行号。
关于java - ASM 字节码 - 从标签偏移量获取行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42168006/