org.objectweb.asm.util

Class TraceClassVisitor

Implemented Interfaces:
ClassVisitor

public class TraceClassVisitor
extends PrintClassVisitor

A PrintClassVisitor that prints a disassembled view of the classes it visits. This class visitor can be used alone (see the main method) to disassemble a class. It can also be used in the middle of class visitor chain to trace the class that is visited at a given point in this chain. This may be uselful for debugging purposes.

The trace printed when visiting the Hello class is the following:

 // compiled from Hello.java
 public class Hello {

   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

   public <init> ()V
     ALOAD 0
     INVOKESPECIAL java/lang/Object <init> ()V
     RETURN
     MAXSTACK = 1
     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

protected ClassVisitor
cv
The ClassVisitor to which this visitor delegates calls.

Fields inherited from class org.objectweb.asm.util.PrintClassVisitor

buf, pw, text

Constructor Summary

TraceClassVisitor(ClassVisitor cv, PrintWriter pw)
Constructs a new TraceClassVisitor object.

Method Summary

static void
main(String[] args)
Prints a disassembled view of the given class to the standard output.
void
visit(int version, int access, String name, String superName, String[] interfaces, String sourceFile)
void
visitAttribute(Attribute attr)
void
visitEnd()
void
visitField(int access, String name, String desc, Object value, Attribute attrs)
void
visitInnerClass(String name, String outerName, String innerName, int access)
CodeVisitor
visitMethod(int access, String name, String desc, String[] exceptions, Attribute attrs)

Methods inherited from class org.objectweb.asm.util.PrintClassVisitor

getDefaultAttributes, visitEnd

Field Details

cv

protected final ClassVisitor cv
The ClassVisitor to which this visitor delegates calls. May be null.

Constructor Details

TraceClassVisitor

public TraceClassVisitor(ClassVisitor cv,
                         PrintWriter pw)
Constructs a new TraceClassVisitor object.
Parameters:
cv - the class visitor to which this adapter must delegate calls. May be null.
pw - the print writer to be used to print the class.

Method Details

main

public static void main(String[] args)
            throws Exception
Prints a disassembled view of the given class to the standard output.

Usage: TraceClassVisitor [-debug] <fully qualified class name or class file name >

Parameters:
args - the command line arguments.

visit

public void visit(int version,
                  int access,
                  String name,
                  String superName,
                  String[] interfaces,
                  String sourceFile)
Specified by:
visit in interface ClassVisitor

visitAttribute

public void visitAttribute(Attribute attr)
Specified by:
visitAttribute in interface ClassVisitor

visitEnd

public void visitEnd()
Specified by:
visitEnd in interface ClassVisitor
Overrides:
visitEnd in interface PrintClassVisitor

visitField

public void visitField(int access,
                       String name,
                       String desc,
                       Object value,
                       Attribute attrs)
Specified by:
visitField in interface ClassVisitor

visitInnerClass

public void visitInnerClass(String name,
                            String outerName,
                            String innerName,
                            int access)
Specified by:
visitInnerClass in interface ClassVisitor

visitMethod

public CodeVisitor visitMethod(int access,
                               String name,
                               String desc,
                               String[] exceptions,
                               Attribute attrs)
Specified by:
visitMethod in interface ClassVisitor