java - 如何让Java编译器在编译后的代码中生成行号

标签 java javac

我有一个名为 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/

相关文章:

java - 多数据库应用SpringBoot、Hibernate和JPA

java - 如何在 Java 中编写智能合并代码?

java - 通过命令提示符编译 .java

java - 从 ant 更改 javac 路径

java - 为什么java可执行文件不接受参数文件?

java - 如何编译具有 Apache Commons 依赖项的 servlet 类?

java - 推荐使用哪种 Java 静态代码分析器来创建报告?

java - 两种不同泛型类型的错误

选择性目录的 Java 编译错误

java - Android 下拉设置菜单