|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectorg.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:
// 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");
}
}
| 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)
ClassVisitorCodeVisitor 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 ClassVisitorvisitEnd in class PrintClassVisitorprivate 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 | ||||||||