aboutsummaryrefslogtreecommitdiffstats
path: root/docs/pdguide/ltwdump.xml
diff options
context:
space:
mode:
Diffstat (limited to 'docs/pdguide/ltwdump.xml')
-rw-r--r--docs/pdguide/ltwdump.xml73
1 files changed, 73 insertions, 0 deletions
diff --git a/docs/pdguide/ltwdump.xml b/docs/pdguide/ltwdump.xml
new file mode 100644
index 000000000..72554d043
--- /dev/null
+++ b/docs/pdguide/ltwdump.xml
@@ -0,0 +1,73 @@
+<chapter id="ltwdump" xreflabel="Dumping classes during load-time weaving">
+ <title>Dumping classes during load-time weaving</title>
+
+ <sect1 id="ltwdump-introduction">
+ <title>Introduction</title>
+
+ <para>
+ 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
+ <literal>java.lang.VerifyError</literal>.
+ 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
+ <literal>META-INF/aop.xml</literal> to dump the classes (by default
+ to an <literal>_ajdump</literal> 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.
+ </para>
+ <sect2 id="ltw-examples" xreflabel="ltwdump-configuration">
+ <title>Configuring bytecode dumping in load-time weaving</title>
+ <para>
+ For details of how to configure byte-code dumping, see the
+ AspectJ Development Environment Guide section on
+ <ulink url="../devguide/ltw-configuration.html#configuring-load-time-weaving-with-aopxml-files">
+ Configuring Load-time Weaving</ulink>.
+ Following is a simple example.
+ </para>
+ </sect2>
+
+ <sect2 id="ltwdump-examples" xreflabel="LTW Dump Examples">
+ <title>LTW Dump Examples</title>
+
+ <para> The following <literal>META-INF/aop.xml</literal> will
+ weave classes in the <literal>com.foo</literal> package (and subpackages) but not
+ CGLIB generated classes in the <literal>com.foo.bar</literal> package (and subpackages).
+ It will also ensure all
+ woven byte-code is dumped both before and after weaving. </para>
+ <programlisting><![CDATA[
+<aspectj>
+ <aspects>
+ <aspect name="ataspectj.EmptyAspect"/>
+ </aspects>
+ <weaver options="-verbose -debug">
+ <dump within="com.foo.bar..*" beforeandafter="true"/>
+ <include within="com.foo..*"/>
+ <exclude within="com.foo.bar..*CGLIB*"/>
+ </weaver>
+</aspectj>
+]]></programlisting>
+
+ <para> You should see messages similar to this: </para>
+
+ <programlisting><![CDATA[
+[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 'com.foo.bar.Test$$EnhancerByCGLIB$$12345'
+[WeavingURLClassLoader] debug weaving 'com.foo.bar.Test'
+]]></programlisting>
+
+ <para> On disk you would find the following files: </para>
+
+ <programlisting><![CDATA[
+_ajdump/_before/com/foo/bar/Test.class
+_ajdump/com/foo/bar/Test.class
+]]></programlisting>
+
+ </sect2>
+ </sect1>
+</chapter>