|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.logicalcobwebs.asm.util.PrintClassVisitor org.logicalcobwebs.asm.util.TraceClassVisitor
public class TraceClassVisitor
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:
where Hello is defined by:// 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 }
public class Hello { public static void main (String[] args) { System.out.println("hello"); } }
Field Summary | |
---|---|
protected ClassVisitor |
cv
The ClassVisitor to which this visitor delegates
calls. |
Fields inherited from class org.logicalcobwebs.asm.util.PrintClassVisitor |
---|
buf, pw, text |
Constructor Summary | |
---|---|
TraceClassVisitor(ClassVisitor cv,
java.io.PrintWriter pw)
Constructs a new TraceClassVisitor object. |
Method Summary | |
---|---|
private void |
appendAccess(int access)
Appends a string representation of the given access modifiers to buf . |
static void |
main(java.lang.String[] args)
Prints a disassembled view of the given class to the standard output. |
void |
visit(int access,
java.lang.String name,
java.lang.String superName,
java.lang.String[] interfaces,
java.lang.String sourceFile)
Visits the header of the class. |
void |
visitAttribute(Attribute attr)
Visits a non standard attribute of the class. |
void |
visitEnd()
Visits the end of the class. |
void |
visitField(int access,
java.lang.String name,
java.lang.String desc,
java.lang.Object value,
Attribute attrs)
Visits a field of the class. |
void |
visitInnerClass(java.lang.String name,
java.lang.String outerName,
java.lang.String innerName,
int access)
Visits information about an inner class. |
CodeVisitor |
visitMethod(int access,
java.lang.String name,
java.lang.String desc,
java.lang.String[] exceptions,
Attribute attrs)
Visits a method of the class. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected final ClassVisitor cv
ClassVisitor
to which this visitor delegates
calls. May be null.
Constructor Detail |
---|
public TraceClassVisitor(ClassVisitor cv, java.io.PrintWriter pw)
TraceClassVisitor
object.
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 Detail |
---|
public static void main(java.lang.String[] args) throws java.lang.Exception
Usage: TraceClassVisitor <fully qualified class name>
args
- the command line arguments.
java.lang.Exception
- if the class cannot be found, or if an IO exception
occurs.public void visit(int access, java.lang.String name, java.lang.String superName, java.lang.String[] interfaces, java.lang.String sourceFile)
ClassVisitor
access
- the class's access flags (see Constants
). This
parameter also indicates if the class is deprecated.name
- the internal name of the class (see getInternalName
).superName
- the internal of name of the super class (see getInternalName
). For interfaces, the super
class is Object
. May be null, but only for the java.lang.Object
class.interfaces
- the internal names of the class's interfaces (see getInternalName
). May be null.sourceFile
- the name of the source file from which this class was
compiled. May be null.public void visitInnerClass(java.lang.String name, java.lang.String outerName, java.lang.String innerName, int access)
ClassVisitor
name
- the internal name of an inner class (see getInternalName
).outerName
- the internal name of the class to which the inner class
belongs (see getInternalName
). May be
null.innerName
- the (simple) name of the inner class inside its enclosing
class. May be null for anonymous inner classes.access
- the access flags of the inner class as originally declared
in the enclosing class.public void visitField(int access, java.lang.String name, java.lang.String desc, java.lang.Object value, Attribute attrs)
ClassVisitor
access
- the field's access flags (see Constants
). This
parameter also indicates if the field is synthetic and/or deprecated.name
- the field's name.desc
- the field's descriptor (see Type
).value
- the field's initial value. This parameter, which may be
null if the field does not have an initial value, must be an
Integer
, a Float
, a
Long
, a Double
or a
String
. This parameter is only used for static
fields. Its value is ignored for non static fields, which must be
initialized through bytecode instructions in constructors or methods.attrs
- the non standard method attributes, linked together by their
next field. May be null.public CodeVisitor visitMethod(int access, java.lang.String name, java.lang.String desc, java.lang.String[] exceptions, Attribute attrs)
ClassVisitor
CodeVisitor
instance (or null) each time it
is called, i.e., it should not return a previously returned visitor.
access
- the method's access flags (see Constants
). This
parameter also indicates if the method is synthetic and/or deprecated.name
- the method's name.desc
- the method's descriptor (see Type
).exceptions
- the internal names of the method's exception
classes (see getInternalName
). May be
null.attrs
- the non standard method attributes, linked together by their
next field. May be null.
public void visitAttribute(Attribute attr)
ClassVisitor
attr
- a non standard class attribute. Must not be null.public void visitEnd()
ClassVisitor
visitEnd
in interface ClassVisitor
visitEnd
in class PrintClassVisitor
private void appendAccess(int access)
buf
.
access
- some access modifiers.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |