gpt4 book ai didi

java - 确定 .class 文件是否使用调试信息编译?

转载 作者:IT老高 更新时间:2023-10-28 20:48:18 24 4
gpt4 key购买 nike

如何确定任何 Java .class 文件是否使用调试信息编译?

我怎样才能确切地知道使用了什么 -g{source|lines|vars} 选项?

最佳答案

如果您在命令行上,则 javap -l 将显示 LineNumberTable 和 LocalVariableTable(如果存在):

peregrino:$ javac -d bin -g:none src/Relation.java 
peregrino:$ javap -classpath bin -l Relation
public class Relation extends java.lang.Object{
public Relation();

peregrino:$ javac -d bin -g:lines src/Relation.java
peregrino:$ javap -classpath bin -l Relation
public class Relation extends java.lang.Object{
public Relation();
LineNumberTable:
line 1: 0
line 33: 4

peregrino:$ javac -d bin -g:vars src/Relation.java
peregrino:$ javap -classpath bin -l Relation
public class Relation extends java.lang.Object{
public Relation();

LocalVariableTable:
Start Length Slot Name Signature
0 5 0 this LRelation;

javap -c 将在反编译开始时显示源文件:

peregrino:$ javac -d bin -g:none src/Relation.java 
peregrino:$ javap -classpath bin -l -c Relation | head
public class Relation extends java.lang.Object{
...

peregrino:$ javac -d bin -g:source src/Relation.java
peregrino:$ javap -classpath bin -l -c Relation | head
Compiled from "Relation.java"
public class Relation extends java.lang.Object{
...

以编程方式,我会查看 ASM而不是编写另一个字节码阅读器。

关于java - 确定 .class 文件是否使用调试信息编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1508235/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com