Class 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");
       }
     }
     
    Author:
    Eric Bruneton, Eugene Kuleshov
    • Field Summary

      Fields 
      Modifier and Type Field Description
      Printer p
      The printer to convert the visited class into text.
      • Fields inherited from class org.objectweb.asm.ClassVisitor

        api, cv
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void visit​(int version, int access, java.lang.String name, java.lang.String signature, java.lang.String superName, java.lang.String[] interfaces)  
      org.objectweb.asm.AnnotationVisitor visitAnnotation​(java.lang.String descriptor, boolean visible)  
      void visitAttribute​(org.objectweb.asm.Attribute attribute)  
      void visitEnd()  
      org.objectweb.asm.FieldVisitor visitField​(int access, java.lang.String name, java.lang.String descriptor, java.lang.String signature, java.lang.Object value)  
      void visitInnerClass​(java.lang.String name, java.lang.String outerName, java.lang.String innerName, int access)  
      org.objectweb.asm.MethodVisitor visitMethod​(int access, java.lang.String name, java.lang.String descriptor, java.lang.String signature, java.lang.String[] exceptions)  
      org.objectweb.asm.ModuleVisitor visitModule​(java.lang.String name, int flags, java.lang.String version)  
      void visitNestHost​(java.lang.String nestHost)  
      void visitNestMember​(java.lang.String nestMember)  
      void visitOuterClass​(java.lang.String owner, java.lang.String name, java.lang.String descriptor)  
      void visitPermittedSubclass​(java.lang.String permittedSubclass)  
      org.objectweb.asm.RecordComponentVisitor visitRecordComponent​(java.lang.String name, java.lang.String descriptor, java.lang.String signature)  
      void visitSource​(java.lang.String file, java.lang.String debug)  
      org.objectweb.asm.AnnotationVisitor visitTypeAnnotation​(int typeRef, org.objectweb.asm.TypePath typePath, java.lang.String descriptor, boolean visible)  
      • Methods inherited from class org.objectweb.asm.ClassVisitor

        getDelegate
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • p

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

      • TraceClassVisitor

        public TraceClassVisitor​(java.io.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,
                                 java.io.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,
                                 java.io.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 Detail

      • visit

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

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

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

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

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

        public org.objectweb.asm.AnnotationVisitor visitAnnotation​(java.lang.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,
                                                                       java.lang.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​(java.lang.String nestMember)
        Overrides:
        visitNestMember in class org.objectweb.asm.ClassVisitor
      • visitPermittedSubclass

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

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

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

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

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

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