java源文件会被编译成字节码,编译的过程中会去除注释和多余的空行。
那么jvm在运行java字节码在发生异常的情况下,打印出堆栈是如何知道关联到具体的源代码的行数呢?
大概查了下资料。
字节码中保存LineNumberTable类似于结构体的对象,该对象保存了源码的行数等相关信息。所以jvm能知道每条指令能来自哪行
https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-4.html#jvms-4.7.12
java程序在发生异常后是如何能精准的定位到源码的行数
最新推荐文章于 2022-09-17 01:51:25 发布