这个是一个非常简单的问题:
当您编译Java程序时,它会转换为字节代码,因此,错过了.java或.class文件的每一行号(我认为这是我错了..)。因此,当您打印堆栈跟踪时,它如何设法获取呼叫堆栈中的所有类名称和行号?我认为我可能会在这里缺少一些东西,但是我找不到与此相关的东西。
当您编译Java程序时,它将转换为字节代码纠正
因此,错过了.java或.class文件的每行号(我认为这是我错了。)。
你错了。线号信息嵌入到.class文件中,除非您以某些方式使用编译器选项。
-g
如果存在行号,则将Java编译器创建的字节码,并将
debug
标志设置为true。这可以使用trom oracle的
javac文档:
收集所有调试信息,包括本地变量。默认情况下,仅生成行号和源文件信息。
-g:none
- 没有生成任何调试信息。
- 仅生成通过逗号分开的关键字列表指定的某种调试信息。有效的关键字是:-g:{keyword list}
source
- Source文件调试信息
lines
- 线数字调试信息
vars
- 局部变量调试信息