javac
a une option appelée -g
. C'est une option pour inclure des informations de débogage dans le fichier de classe et vice versa.
-- -g: lines
inclura le numéro de ligne du code source
-- -g: vars
inclura les informations sur le nom de la variable locale
--Incluez le nom du fichier source avec -g: source
-- -g
inclura toutes les informations de débogage
-- -g: aucun
n'inclura aucune information de débogage
Supposons que vous ayez du code comme le suivant javac -g Hello.java
.
public class Hello {
public String say(String name) {
return "hello ".concat(name);
}
}
Alors javap -l Hello
donne: ( -l
est une option pour imprimer le numéro de ligne et la table des variables locales):
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;
}
Le "LineNumberTable" contient le numéro de ligne, le "LocalVariableTable" contient le nom de la variable locale et le "Compiled from ~" contient le nom du fichier source.
Et si javac -g: none Hello.java
? Voici le javap -l Hello
.
public class Hello {
public Hello();
public java.lang.String say(java.lang.String);
}
Il ne contient aucune information de débogage.
Nous ne faisons généralement pas explicitement de javac
et compilons en utilisant des IDE comme Eclipse et IntelliJ IDEA, ou Maven. Cependant, vous devriez pouvoir avancer tout en regardant le nom de la variable en ouvrant le code source correspondant sans vous en soucier lors du débogage. Cela signifie que l'EDI et Maven incluent des informations de débogage par défaut.
Dans Eclipse, vous pouvez définir s'il faut inclure les informations de débogage. J'ai essayé de réduire l'état par défaut. Il inclut désormais vars
, lines
et source
.
Je ne sais pas car je n'utilise pas IntelliJ IDEA, mais je pense que je peux probablement effectuer des réglages similaires.
Maven peut également définir s'il faut inclure les informations de débogage maven-compiler-plugin debug.
Au fait, si vous utilisez javac Hello.java
, le nom du fichier source et le numéro de ligne seront inclus. En d'autres termes, c'est la même chose que javac -g: source, lines Hello.java
par défaut.
Pour résumer ce qui précède,
--javac
inclut les informations de débogage dans le fichier de classe avec l'option -g
--Par défaut, le nom du fichier source et le numéro de ligne sont inclus
--IDE et Maven incluront les noms de variables locales en plus des noms de fichiers source et des numéros de ligne par défaut
Cela signifie que.
Recommended Posts