Class TraceClassVisitor

java.lang.Object
org.objectweb.asm.ClassVisitor
org.objectweb.asm.util.TraceClassVisitor

public final class TraceClassVisitor extends org.objectweb.asm.ClassVisitor
A ClassVisitor that prints the classes it visits with a Printer. This class visitor can be used in the middle of a class visitor chain to trace the class that is visited at a given point in this chain. This may be useful for debugging purposes.

When used with a Textifier, the trace printed when visiting the Hello class is the following:

 // class version 49.0 (49) // access flags 0x21 public class Hello {

 // compiled from: Hello.java

 // access flags 0x1
 public <init> ()V
 ALOAD 0
 INVOKESPECIAL java/lang/Object <init> ()V
 RETURN
 MAXSTACK = 1 MAXLOCALS = 1

 // access flags 0x9
 public static main ([Ljava/lang/String;)V
 GETSTATIC java/lang/System out Ljava/io/PrintStream;
 LDC "hello"
 INVOKEVIRTUAL java/io/PrintStream println (Ljava/lang/String;)V
 RETURN
 MAXSTACK = 2 MAXLOCALS = 1
 }
 

where Hello is defined by:

 public class Hello {

   public static void main(String[] args) {
     System.out.println("hello");
   }
 }
 
  • Field Details

    • p

      public final Printer p
      The printer to convert the visited class into text.
  • Constructor Details

    • TraceClassVisitor

      public TraceClassVisitor(PrintWriter printWriter)
      Constructs a new TraceClassVisitor.
      Parameters:
      printWriter - the print writer to be used to print the class. May be null.
    • TraceClassVisitor

      public TraceClassVisitor(org.objectweb.asm.ClassVisitor classVisitor, PrintWriter printWriter)
      Constructs a new TraceClassVisitor.
      Parameters:
      classVisitor - the class visitor to which to delegate calls. May be null.
      printWriter - the print writer to be used to print the class. May be null.
    • TraceClassVisitor

      public TraceClassVisitor(org.objectweb.asm.ClassVisitor classVisitor, Printer printer, PrintWriter printWriter)
      Constructs a new TraceClassVisitor.
      Parameters:
      classVisitor - the class visitor to which to delegate calls. May be null.
      printer - the printer to convert the visited class into text.
      printWriter - the print writer to be used to print the class. May be null.
  • Method Details

    • visit

      public void visit(int version, int access, String name, String signature, String superName, String[] interfaces)
      Overrides:
      visit in class org.objectweb.asm.ClassVisitor
    • visitSource

      public void visitSource(String file, String debug)
      Overrides:
      visitSource in class org.objectweb.asm.ClassVisitor
    • visitModule

      public org.objectweb.asm.ModuleVisitor visitModule(String name, int flags, String version)
      Overrides:
      visitModule in class org.objectweb.asm.ClassVisitor
    • visitNestHost

      public void visitNestHost(String nestHost)
      Overrides:
      visitNestHost in class org.objectweb.asm.ClassVisitor
    • visitOuterClass

      public void visitOuterClass(String owner, String name, String descriptor)
      Overrides:
      visitOuterClass in class org.objectweb.asm.ClassVisitor
    • visitAnnotation

      public org.objectweb.asm.AnnotationVisitor visitAnnotation(String descriptor, boolean visible)
      Overrides:
      visitAnnotation in class org.objectweb.asm.ClassVisitor
    • visitTypeAnnotation

      public org.objectweb.asm.AnnotationVisitor visitTypeAnnotation(int typeRef, org.objectweb.asm.TypePath typePath, String descriptor, boolean visible)
      Overrides:
      visitTypeAnnotation in class org.objectweb.asm.ClassVisitor
    • visitAttribute

      public void visitAttribute(org.objectweb.asm.Attribute attribute)
      Overrides:
      visitAttribute in class org.objectweb.asm.ClassVisitor
    • visitNestMember

      public void visitNestMember(String nestMember)
      Overrides:
      visitNestMember in class org.objectweb.asm.ClassVisitor
    • visitPermittedSubclass

      public void visitPermittedSubclass(String permittedSubclass)
      Overrides:
      visitPermittedSubclass in class org.objectweb.asm.ClassVisitor
    • visitInnerClass

      public void visitInnerClass(String name, String outerName, String innerName, int access)
      Overrides:
      visitInnerClass in class org.objectweb.asm.ClassVisitor
    • visitRecordComponent

      public org.objectweb.asm.RecordComponentVisitor visitRecordComponent(String name, String descriptor, String signature)
      Overrides:
      visitRecordComponent in class org.objectweb.asm.ClassVisitor
    • visitField

      public org.objectweb.asm.FieldVisitor visitField(int access, String name, String descriptor, String signature, Object value)
      Overrides:
      visitField in class org.objectweb.asm.ClassVisitor
    • visitMethod

      public org.objectweb.asm.MethodVisitor visitMethod(int access, String name, String descriptor, String signature, String[] exceptions)
      Overrides:
      visitMethod in class org.objectweb.asm.ClassVisitor
    • visitEnd

      public void visitEnd()
      Overrides:
      visitEnd in class org.objectweb.asm.ClassVisitor