我有一个名为 A.class 的 hello world 程序。它是使用命令 javac A.java
编译的。它所做的只是打印“hello world”。
接下来,我使用 javac -g A.java
进行编译。我期待看到行号,但看不到。知道发生了什么吗?
我确实看到 javac 编译的 .class 文件和 javac -g 编译的 .class 文件之间的某些特殊字符有非常小的差异。但是我看不到任何行号。
我对此的好奇是因为我想知道行号对性能有什么样的影响。其次,我想知道 log4j 等如何维护日志记录的行号。谢谢。
最佳答案
编译命令很好,-g
确实打开了调试信息的生成。顺便说一句:行号是默认生成的,需要 -g:none
或类似的东西来关闭它。
缺少的是一种有意义地检查生成的 .class
文件的方法,类似于工具使用它的方式。尝试:
$ javap -l -c A.class
-l
打开行号表的打印。
-c
打开反汇编字节码指令的打印(可能很有趣,因为行号表将源行号与字节码指令相关联)。
关于java - 如何让Java编译器在编译后的代码中生成行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43376559/