javac
hat eine Option namens -g
. Dies ist eine Option, um Debug-Informationen in die Klassendatei aufzunehmen und umgekehrt.
-- -g: lines
enthält die Zeilennummer des Quellcodes
-- -g: vars
enthält die Informationen zum lokalen Variablennamen
-g: source
ein
-- -g
enthält alle Debug-Informationen
-- -g: none
enthält keine Debug-InformationenAngenommen, Sie haben Code wie den folgenden javac -g Hello.java
.
public class Hello {
public String say(String name) {
return "hello ".concat(name);
}
}
Dann gibt javap -l Hello
Folgendes an: ( -l
ist eine Option zum Drucken der Zeilennummer und der lokalen Variablentabelle):
Compiled from "Hello.java"
public class Hello {
public Hello();
LineNumberTable:
line 1: 0
LocalVariableTable:
Start Length Slot Name Signature
0 5 0 this LHello;
public java.lang.String say(java.lang.String);
LineNumberTable:
line 3: 0
LocalVariableTable:
Start Length Slot Name Signature
0 7 0 this LHello;
0 7 1 name Ljava/lang/String;
}
Die LineNumberTable
enthält die Zeilennummer, die LocalVariableTable
enthält den lokalen Variablennamen und dieCompiled from ~
enthält den Namen der Quelldatei.
Was ist, wenn javac -g: none Hello.java
? Hier ist das javap -l Hallo
.
public class Hello {
public Hello();
public java.lang.String say(java.lang.String);
}
Es enthält keine Debug-Informationen.
Wir machen normalerweise nicht explizit "javac" und kompilieren mit IDEs wie Eclipse und IntelliJ IDEA oder Maven. Sie sollten jedoch in der Lage sein, beim Betrachten des Variablennamens einen Schritt durchzugehen, indem Sie den entsprechenden Quellcode öffnen, ohne sich beim Debuggen darum kümmern zu müssen. Das bedeutet, dass IDE und Maven standardmäßig Debug-Informationen enthalten.
In Eclipse können Sie festlegen, ob Debug-Informationen enthalten sein sollen. Ich habe versucht, den Standardstatus zu drücken. Es enthält jetzt "vars", "lines" und "source".
Ich weiß es nicht, weil ich IntelliJ IDEA nicht verwende, aber ich denke, ich kann wahrscheinlich ähnliche Einstellungen vornehmen.
Maven kann auch festlegen, ob Debug-Informationen Debuggen des Maven-Compiler-Plugins enthalten sein sollen.
Wenn Sie "javac Hello.java" verwenden, werden übrigens der Name der Quelldatei und die Zeilennummer angegeben. Mit anderen Worten, es ist standardmäßig dasselbe wie javac -g: source, lines Hello.java
.
Um das Obige zusammenzufassen,
--javac
enthält Debug-Informationen in der Klassendatei mit der Option -g
Es bedeutet das.
Recommended Posts