Chapter 5. Dumping classes during load-time weaving

Table of Contents

Configuring bytecode dumping in load-time weaving
LTW Dump Examples


Very rarely problems may be encountered with classes that have been load-time woven. Symptoms will include incorrect program function or a Java exception such as java.lang.VerifyError. In these situations it's most helpful to include the offending class in the bug report. When using load-time weaving the woven classes are in memory only so to save them to disk configure META-INF/aop.xml to dump the classes (by default to an _ajdump subdirectory of the current working directory). Also if the input class file is not available (e.g. it is a generated proxy or has already been instrumented by another agent) you can configure the weaver to dump the input classes as well.

Configuring bytecode dumping in load-time weaving

For details of how to configure byte-code dumping, see the AspectJ Development Environment Guide section on Configuring Load-time Weaving. Following is a simple example.

LTW Dump Examples

The following META-INF/aop.xml will weave classes in the package (and subpackages) but not CGLIB generated classes in the package (and subpackages). It will also ensure all woven byte-code is dumped both before and after weaving.

			<aspect name="ataspectj.EmptyAspect"/>
	    <weaver options="-verbose -debug">
	        <dump within="*" beforeandafter="true"/> 
    	    <include within="*"/>
        	<exclude within="*CGLIB*"/>

You should see messages similar to this:

[WeavingURLClassLoader] info AspectJ Weaver Version 1.5.3 built on Thursday Oct 26, 2006 at 17:22:31 GMT
[WeavingURLClassLoader] info register classloader org.aspectj.weaver.loadtime.WeavingURLClassLoader
[WeavingURLClassLoader] info using configuration /C:/tempMETA-INF/aop.xml
[WeavingURLClassLoader] info register aspect ataspectj.EmptyAspect
[WeavingURLClassLoader] debug not weaving '$$EnhancerByCGLIB$$12345'
[WeavingURLClassLoader] debug weaving ''

On disk you would find the following files: