/usr/share/doc/aspectj-doc/pdguide/trace.html is in aspectj-doc 1.8.3-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 4. Tracing</title><link rel="stylesheet" type="text/css" href="aspectj-docs.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="The AspectJtm Problem Diagnosis Guide"><link rel="up" href="index.html" title="The AspectJtm Problem Diagnosis Guide"><link rel="prev" href="ajcore.html" title="Chapter 3. AspectJ Core Files"><link rel="next" href="ltwdump.html" title="Chapter 5. Dumping classes during load-time weaving"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 4. Tracing</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ajcore.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ltwdump.html">Next</a></td></tr></table><hr></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="trace"></a>Chapter 4. Tracing</h1></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl class="toc"><dt><span class="sect1"><a href="trace.html#trace-introduction">Introduction</a></span></dt><dd><dl><dt><span class="sect2"><a href="trace.html#trace-configuration">Configuring Tracing</a></span></dt><dt><span class="sect2"><a href="trace.html#trace-examples">Examples</a></span></dt></dl></dd></dl></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="trace-introduction"></a>Introduction</h2></div></div></div><p>
The AspectJ developers have instrumented the compiler/weaver with
many "trace" messages for their own debugging use. These remain in
the production releases because tracing helps when it is hard to
isolate the problem in a test case. This sections describes how
to enable tracing so you can provide trace information on bug reports.
</p><p>
The usual approach to opening a report on Bugzilla is to describe the symptoms of the
problem and attach a simple testcase. This allows the AspectJ team to try and reproduce the problem in
an attempt to fix it as well as improve the test suite. Unfortunately it may not be possible
to produce such a testcase either because your program is too large or is commercially sensitive. Alternatively
the problem may relate to your specific environment where AspectJ is being used and will not be
reproducible by the AspectJ team. In each of these situations you can produce a
trace of the compiler when the problem occurs instead. This can then be attached to the bug report. </p><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="trace-configuration"></a>Configuring Tracing</h3></div></div></div><p> When available (Java 5 or later) AspectJ will use the
<a class="ulink" href="http://java.sun.com/j2se/1.5.0/docs/guide/logging/index.html" target="_top">
java.util.logging</a> infrastructure
configured using a <code class="literal">logging.properties</code> file. By default only error
and fatal events will be logged but less severe warnings as well as fine-grained
method entry and exit events can be obtained using the appropriate configuration. All
regular compiler messages can also be logged through the infrastructure by setting the
<code class="literal">org.aspectj.weaving.messages</code> System property. </p><p> If you are running the AspectJ compiler/weaver under JDK 1.4 or earlier,
AspectJ will use a simple built-in trace
infrastructure that logs to stderr. This is enabled by setting the
<code class="literal">org.aspectj.weaving.tracing.enabled</code> System property. You may also override
the default behaviour or provide your own trace implementation using the
<code class="literal">org.aspectj.weaving.tracing.factory</code> System property. </p><p> The table below lists the System properties that can be used to configure tracing. </p><div class="informaltable"><table border="1"><colgroup><col><col></colgroup><thead><tr><th>Property</th><th>Description</th></tr></thead><tbody><tr><td>
<code class="literal">org.aspectj.tracing.debug</code>
</td><td>
Enable simple debugging of the trace infrastructure itself.
<p> Default: <code class="literal">false</code>. </p>
</td></tr><tr><td>
<code class="literal">org.aspectj.tracing.enabled</code>
</td><td>
Enable the built-in AspectJ trace infrastructure.
<p> Default: <code class="literal">false</code>. </p>
</td></tr><tr><td>
<code class="literal">org.aspectj.tracing.factory</code>
</td><td>
Select trace infrastructure. Specify the fully qualified class name
of the <code class="literal">org.aspectj.weaver.tools.TraceFactory</code>
interface to use a custom infrastructure. Specify a value of
<code class="literal">default</code> to force AspectJ to use it's
built-in infrastructure.
</td></tr><tr><td>
<code class="literal">org.aspectj.tracing.messages</code>
</td><td>
Enable tracing of compiler messages. The kind of messages logged
is determined by the selected trace infrastructure not the message
configuration.
<p> Default: <code class="literal">false</code>. </p>
</td></tr></tbody></table></div></div><div class="sect2"><div class="titlepage"><div><div><h3 class="title"><a name="trace-examples"></a>Examples</h3></div></div></div><p> Using <code class="literal">-Dorg.aspectj.tracing.factory=default</code>
to force AspectJ to use its internal infrastructure,
<code class="literal">-Dorg.aspectj.tracing.enabled=true</code> to turn it on and
<code class="literal">-Dorg.aspectj.tracing.messages=true</code> to include messages
running a simple HelloWorld with LTW will generate tracing to stderr. Below
is an extract from that trace with method arguments removed.
You will notice the millisecond time stamp,
thread id and indication of entry/exit/event or message type for each line
of trace.
</p><pre class="programlisting">
15:44:18.630 main > org.aspectj.weaver.loadtime.Aj.<init>
15:44:18.660 main < org.aspectj.weaver.loadtime.Aj.<init>
15:44:18.660 main > org.aspectj.weaver.loadtime.Aj.preProcess
15:44:18.660 main - org.aspectj.weaver.loadtime.Aj.preProcess
15:44:18.730 main > org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.<init>
15:44:18.730 main < org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.<init>
15:44:18.730 main > org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.initialize
15:44:18.821 main I [AppClassLoader@92e78c] info AspectJ Weaver Version DEVELOPMENT ...
15:44:18.821 main > org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.parseDefinitions
15:44:18.821 main I [AppClassLoader@92e78c] info register classloader ...
15:44:18.821 main - org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.parseDefinitions
15:44:18.841 main - org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.parseDefinitions
15:44:18.841 main I [AppClassLoader@92e78c] info using configuration ...
15:44:18.891 main < org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.parseDefinitions
15:44:19.021 main > org.aspectj.weaver.World$TypeMap.<init>
15:44:19.021 main < org.aspectj.weaver.World$TypeMap.<init>
15:44:19.021 main > org.aspectj.weaver.CrosscuttingMembersSet.<init>
15:44:19.021 main < org.aspectj.weaver.CrosscuttingMembersSet.<init>
15:44:19.021 main > org.aspectj.weaver.Lint.<init>
15:44:19.021 main < org.aspectj.weaver.Lint.<init>
15:44:19.021 main > org.aspectj.weaver.World.<init>
15:44:19.111 main < org.aspectj.weaver.World.<init>
15:44:19.201 main > org.aspectj.weaver.bcel.BcelWeaver.<init>
15:44:19.201 main < org.aspectj.weaver.bcel.BcelWeaver.<init>
15:44:19.201 main > org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerDefinitions
15:44:19.211 main > org.aspectj.weaver.bcel.BcelWeaver.setReweavableMode
15:44:19.351 main < org.aspectj.weaver.bcel.BcelWeaver.setReweavableMode
15:44:19.351 main > org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerAspects
15:44:19.351 main I [AppClassLoader@92e78c] info register aspect Aspect
15:44:19.351 main > org.aspectj.weaver.bcel.BcelWeaver.addLibraryAspect
15:44:19.501 main - org.aspectj.weaver.bcel.BcelWorld.lookupJavaClass
15:44:19.632 main > org.aspectj.weaver.CrosscuttingMembersSet.addOrReplaceAspect
15:44:19.792 main < org.aspectj.weaver.CrosscuttingMembersSet.addOrReplaceAspect
15:44:19.792 main < org.aspectj.weaver.bcel.BcelWeaver.addLibraryAspect
15:44:19.792 main < org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerAspects
15:44:19.792 main < org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.registerDefinitions
15:44:19.792 main > org.aspectj.weaver.bcel.BcelWeaver.prepareForWeave
15:44:19.822 main < org.aspectj.weaver.bcel.BcelWeaver.prepareForWeave
15:44:19.822 main > org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.weaveAndDefineConcete...
15:44:19.822 main < org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.weaveAndDefineConcete...
15:44:19.822 main < org.aspectj.weaver.loadtime.ClassLoaderWeavingAdaptor.initialize
15:44:19.822 main > org.aspectj.weaver.tools.WeavingAdaptor.weaveClass
...
</pre><p> Alternatively when running under Java 5 the <code class="literal">logging.properties</code>
file below could be used to configure Java Logging. The resulting
file, just containing trace for the
<code class="literal">org.aspectj.weaver.loadtime</code> package, will be
written to <code class="literal">java0.log</code> in your <code class="literal">user.home</code> directory.
</p><pre class="programlisting">
handlers= java.util.logging.FileHandler
.level= INFO
java.util.logging.FileHandler.pattern = %h/java%u.log
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.FileHandler.level = FINER
org.aspectj.weaver.loadtime.level = FINER
</pre><p>
By setting the System property <code class="literal">-Dorg.aspectj.tracing.debug=true</code>
you should see a message confirming which trace infrastructure is being used.
</p><pre class="programlisting">
TraceFactory.instance=org.aspectj.weaver.tools.Jdk14TraceFactory@12dacd1
</pre></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ajcore.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ltwdump.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 3. AspectJ Core Files </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 5. Dumping classes during load-time weaving</td></tr></table></div></body></html>
|