如何解决JVM 如何在运行时知道行号?
当一个 .java 文件被编译时,它会产生一个包含字节码的 .class 文件。 JVM 获取该字节码并执行它。这一步的字节,如果抛出异常,还会在源代码中提到这个错误发生在哪一行。但是字节码和源代码中的行号将完全不同,并且字节码在编译期间也不存储行号,因为我没有找到任何与之相关的助记符(并且存储行号只会增加代码大小)。那么有人能告诉我 JVM 如何在抛出异常的源代码中获取确切的行号。
解决方法
JVM 规范为类文件(字节码)的格式提供了参考。行号存储在属性 LineNumberTable
中。您还可以尝试在某个 javap
文件上运行以下 Java 反汇编命令(.class
由 JDK 提供)以查看它们:
javap -l MyClass.class
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。