[JAVA] IDE et Maven compilent avec toutes les informations de débogage

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.

eclipse.png

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

IDE et Maven compilent avec toutes les informations de débogage
Exécutez Maven sur Java 8 lors de la compilation sur Java 6 et des tests sur Java 11
Hello World avec GWT 2.8.2 et Maven
Je voulais démarrer un serveur AP et déboguer avec juste la commande Maven
Accéder et déboguer le conteneur Docker Circle CI avec ssh