This is an annotated trace of an ajc compilation of HelloWorld (no aspects involved).
ajdtcore::Entering execution(void org.aspectj.tools.ajc.Main.main(String[]))
arguments ([Ljava.lang.String;@1ac1fe4)
  // ---------------------------------------------------------------------------
  // create an ajc.Main instance...
  //
---------------------------------------------------------------------------
ajdtcore::Entering execution(org.aspectj.tools.ajc.Main()) arguments ()
// command controller is used for repeated compilations in incremental mode
ajdtcore::Entering execution(org.aspectj.tools.ajc.Main.CommandController()) arguments ()
ajdtcore::Exiting execution(org.aspectj.tools.ajc.Main.CommandController())
    // message handler is used to accumulate
messages resulting from the compilation
bridge::Entering execution(org.aspectj.bridge.MessageHandler(boolean)) arguments (true)
bridge::Entering execution(void org.aspectj.bridge.MessageHandler.init(boolean)) arguments (true)
bridge::Exiting execution(void org.aspectj.bridge.MessageHandler.init(boolean)) return: null
    bridge::Exiting
execution(org.aspectj.bridge.MessageHandler(boolean))\
ajdtcore::Exiting execution(org.aspectj.tools.ajc.Main())
  //
----------------------------------------------------------------------------
  // run it!
  //
----------------------------------------------------------------------------
ajdtcore::Entering execution(void org.aspectj.tools.ajc.Main.runMain(String[], boolean))
arguments ([Ljava.lang.String;@1ac1fe4,true)
    // set message
verboseness according to presence of -verbose arg
    // run
    // -------------
ajdtcore::Entering execution(void org.aspectj.tools.ajc.Main.run(String[], IMessageHolder))
arguments ([Ljava.lang.String;@1ac1fe4,MessageHandler: no messages)
      // initialise the command controller -
strips out any incremental compilation options, leaving rest intact
ajdtcore::Entering execution(String[] org.aspectj.tools.ajc.Main.CommandController.init(String[], IMessageHandler))
arguments ([Ljava.lang.String;@1ac1fe4,MessageHandler: no messages)
      // create a command object for
compilation (an ICommand)
bridge::Entering execution(ICommand org.aspectj.bridge.ReflectionFactory.makeCommand(String, IMessageHandler))
arguments (org.aspectj.ajdt.ajc.AjdtCommand,MessageHandler: no messages)
ajdtcore::Entering execution(org.aspectj.ajdt.ajc.AjdtCommand()) arguments ()
ajdtcore::Exiting execution(org.aspectj.ajdt.ajc.AjdtCommand())
...
bridge::Exiting execution(ICommand org.aspectj.bridge.ReflectionFactory.makeCommand(String, IMessageHandler))
return: org.aspectj.ajdt.ajc.AjdtCommand@11c8a71
      //
----------------------------------------------------------------------------------------------------
      // run the command... all the
command-line args except verbosity and incremental options are passed in
      //
----------------------------------------------------------------------------------------------------
ajdtcore::Entering execution(boolean org.aspectj.ajdt.ajc.AjdtCommand.runCommand(String[], IMessageHandler))
arguments ([Ljava.lang.String;@1ac1fe4,MessageHandler: no messages)
      // create a build manager that sends messages to the given
message holder
ajdtcore::Entering execution(org.aspectj.ajdt.internal.core.builder.AjBuildManager(IMessageHandler))
arguments (MessageHandler: no messages)
ajdtcore::Exiting execution(org.aspectj.ajdt.internal.core.builder.AjBuildManager(IMessageHandler))
      // call do-command - this handles both one-off and incremental
(repeat) compiles
ajdtcore::Entering execution(boolean org.aspectj.ajdt.ajc.AjdtCommand.doCommand(IMessageHandler, boolean))
                        
arguments (MessageHandler: no
messages,false)
          // create build configuration object for this build by
parsing command-line arguments
ajdtcore::Entering execution(AjBuildConfig org.aspectj.ajdt.ajc.AjdtCommand.genBuildConfig(String[],
CountingMessageHandler))
arguments ([Ljava.lang.String;@76cbf7,MessageHandler: no messages)
            // create a build
arg parser, this is actually a subclass of the eclipse batch compiler
            // which is org.eclipse.jdt.internal.compiler.batch.Main
ajdtcore::Entering execution(org.aspectj.ajdt.ajc.BuildArgParser()) arguments ()
ajdtcore::Exiting execution(org.aspectj.ajdt.ajc.BuildArgParser())
            // ask the parser
to create the build configuration object
ajdtcore::Entering execution(AjBuildConfig org.aspectj.ajdt.ajc.BuildArgParser.genBuildConfig(
String[], IMessageHandler))
arguments ([Ljava.lang.String;@76cbf7,MessageHandler: no messages)
ajdtcore::Entering execution(org.aspectj.ajdt.internal.core.builder.AjBuildConfig()) arguments ()
ajdtcore::Exiting execution(org.aspectj.ajdt.internal.core.builder.AjBuildConfig())
ajdtcore::Entering execution(org.aspectj.ajdt.ajc.BuildArgParser.AjcConfigParser(
                                    BuildArgParser, AjBuildConfig,
IMessageHandler)) 
                                 arguments (org.aspectj.ajdt.ajc.BuildArgParser@126804e,
                                            org.aspectj.ajdt.internal.core.builder.AjBuildConfig@b1b4c3,
                                           
MessageHandler: no messages)
              ajdtcore::Exiting
execution(org.aspectj.ajdt.ajc.BuildArgParser.AjcConfigParser(
BuildArgParser, AjBuildConfig, IMessageHandler))
util::Entering execution(void org.aspectj.util.ConfigParser.parseCommandLine(String[]))
arguments ([Ljava.lang.String;@76cbf7)
                // build a linked list of
arguments and then...
util::Entering execution(void org.aspectj.util.ConfigParser.parseArgs(LinkedList))
arguments ([org.aspectj.util.ConfigParser$Arg@72ffb])
                // ajc options
are handled by BuildArgParser.AjcConfigParser.parseOption
                // all other args (source
files, lst files, imported argfiles) are handled in ConfigParser superclass
util::Exiting execution(void org.aspectj.util.ConfigParser.parseArgs(LinkedList)) return: null
util::Exiting execution(void org.aspectj.util.ConfigParser.parseCommandLine(String[])) return: null
              // get
the list of files to be compiled
util::Entering execution(List org.aspectj.util.ConfigParser.getFiles()) arguments ()
util::Exiting execution(List org.aspectj.util.ConfigParser.getFiles()) return:
                   [C:\Documents and
Settings\colyer\Hello.java]
              // get any remaining arguments...
these will be passed up to the eclipse batch compiler
ajdtcore::Entering execution(List org.aspectj.ajdt.ajc.BuildArgParser.AjcConfigParser.getUnparsedArgs())
arguments ()
ajdtcore::Exiting execution(List org.aspectj.ajdt.ajc.BuildArgParser.AjcConfigParser.getUnparsedArgs())
return: []
              // configure the batch compiler
(superclass) with any as yet unparsed args
jdtcore::Entering execution(void org.eclipse.jdt.internal.compiler.batch.Main.configure(String[]))
arguments ([Ljava.lang.String;@1df38fd)
jdtcore::Exiting execution(void org.eclipse.jdt.internal.compiler.batch.Main.configure(String[]))
return: null
              // tell the AjBuildConfig what it has to
build
ajdtcore::Entering execution(void org.aspectj.ajdt.internal.core.builder.AjBuildConfig.setFiles(List))
arguments ([C:\Documents and Settings\colyer\Hello.java])
ajdtcore::Exiting execution(void org.aspectj.ajdt.internal.core.builder.AjBuildConfig.setFiles(List))
return: null
              // calculate the
classpath for compilation
ajdtcore::Entering execution(List org.aspectj.ajdt.ajc.BuildArgParser.getClasspath(
BuildArgParser.AjcConfigParser))
arguments (org.aspectj.ajdt.ajc.BuildArgParser$AjcConfigParser@126e85f)
...
ajdtcore::Exiting execution(List org.aspectj.ajdt.ajc.BuildArgParser.getClasspath(
BuildArgParser.AjcConfigParser))
return:
                       [C:\ColyerRoot\Programs\SunJDK141\jre\lib\rt.jar,
                       
C:\ColyerRoot\Programs\SunJDK141\jre\lib\i18n.jar, 
                       
C:\ColyerRoot\Programs\SunJDK141\jre\lib\sunrsasign.jar, 
                       
C:\ColyerRoot\Programs\SunJDK141\jre\lib\jsse.jar, 
                       
C:\ColyerRoot\Programs\SunJDK141\jre\lib\jce.jar, 
                       
C:\ColyerRoot\Programs\SunJDK141\jre\lib\charsets.jar, 
                       
C:\ColyerRoot\Programs\SunJDK141\jre\classes, 
                        C:\ColyerRoot\Programs\SunJDK141\jre\lib\ext\aspectjrt.jar,
                       
C:\ColyerRoot\Programs\SunJDK141\jre\lib\ext\dnsns.jar, 
                       
C:\ColyerRoot\Programs\SunJDK141\jre\lib\ext\ldapsec.jar, 
                        C:\ColyerRoot\Programs\SunJDK141\jre\lib\ext\localedata.jar,
                       
C:\ColyerRoot\Programs\SunJDK141\jre\lib\ext\sunjce_provider.jar, 
                       
c:\ColyerRoot\Programs\aspectj1.1\lib\aspectjtools_g.jar, 
                        c:\ColyerRoot\Programs\aspectj1.1\lib\aspectjtools.jar,
                       
c:\ColyerRoot\Programs\aspectj1.1\lib\log4j-1.2.7.jar, 
                       
c:\ColyerRoot\Programs\aspectj1.1\lib, 
                        ., 
                        C:\ColyerRoot\Programs\aspectj1.1b4\lib\aspectjrt.jar]
              // tell the build config what we
learnt...
ajdtcore::Entering execution(void org.aspectj.ajdt.internal.core.builder.AjBuildConfig.setClasspath(List))
arguments (...)
ajdtcore::Exiting execution(void org.aspectj.ajdt.internal.core.builder.AjBuildConfig.setClasspath(List))
return: null
              // ensure we always generate
debug info at this phase
ajdtcore::Entering execution(void org.aspectj.ajdt.ajc.BuildArgParser.setDebugOptions()) arguments ()
ajdtcore::Exiting execution(void org.aspectj.ajdt.ajc.BuildArgParser.setDebugOptions()) return: null
              // give the build config the java options
that were parsed by the eclipse batch compiler
ajdtcore::Entering execution(void org.aspectj.ajdt.internal.core.builder.AjBuildConfig.setJavaOptions(Map))
                       arguments ( {org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=ignore,
                                   
org.eclipse.jdt.core.compiler.compliance=1.3, 
                                   
org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled,
                                   
org.eclipse.jdt.core.compiler.codegen.unusedLocal=optimize out, 
                                   
org.eclipse.jdt.core.compiler.problem.deprecation=ignore,                                                
                                   
org.eclipse.jdt.core.compiler.problem.
                                              
unusedParameterWhenImplementingAbstract=disabled, 
                                   
org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore,
                                   
org.eclipse.jdt.core.compiler.problem.unusedLocal=ignore, 
                                   
org.eclipse.jdt.core.compiler.problem.unusedImport=ignore, 
                                    org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=ignore,
                                   
org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore, 
                                   
org.eclipse.jdt.core.compiler.debug.localVariable=generate, 
                                   
org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=ignore,
                                   
org.eclipse.jdt.core.compiler.debug.sourceFile=generate, 
                                    org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=ignore,
                                   
org.eclipse.jdt.core.compiler.debug.lineNumber=generate, 
                                   
org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore, 
                                   
org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=ignore, 
                                   
org.eclipse.jdt.core.compiler.problem.assertIdentifier=ignore, 
                                    org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=ignore,
                                   
org.eclipse.jdt.core.compiler.problem.invalidImport=error, 
                                   
org.eclipse.jdt.core.compiler.problem.unreachableCode=error, 
                                   
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.1, 
                                   
org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=ignore,
                                    org.eclipse.jdt.core.compiler.source=1.3})
ajdtcore::Exiting execution(void org.aspectj.ajdt.internal.core.builder.AjBuildConfig.setJavaOptions(Map))
return: null
ajdtcore::Exiting execution(AjBuildConfig org.aspectj.ajdt.ajc.BuildArgParser.genBuildConfig(
                                                        
String[], IMessageHandler)) 
                              return:
org.aspectj.ajdt.internal.core.builder.AjBuildConfig@b1b4c3
         ajdtcore::Exiting execution(AjBuildConfig
org.aspectj.ajdt.ajc.AjdtCommand.genBuildConfig(
String[], CountingMessageHandler))
return: org.aspectj.ajdt.internal.core.builder.AjBuildConfig@b1b4c3
         //
------------------------------------------------------------------------------------------
         // here we go... kick off a batch
build, if we were in incremental mode this would be a call
         // to AjBuildManager.incrementalBuild()
instead
         //
------------------------------------------------------------------------------------------
ajdtcore::Entering execution(boolean org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(
                         
              AjBuildConfig, IMessageHandler)) 
                            arguments (org.aspectj.ajdt.internal.core.builder.AjBuildConfig@b1b4c3,
MessageHandler: no messages)
            // *********************************************
            // what happens here is captured separately!!
            // see ajc_batchBuild_annotated.htm
            // *********************************************
ajdtcore::Exiting execution(boolean org.aspectj.ajdt.internal.core.builder.AjBuildManager.batchBuild(
AjBuildConfig, IMessageHandler))
return: true
ajdtcore::Exiting execution(boolean org.aspectj.ajdt.ajc.AjdtCommand.doCommand(IMessageHandler, boolean))
return: true
ajdtcore::Exiting execution(boolean org.aspectj.ajdt.ajc.AjdtCommand.runCommand(String[], IMessageHandler))
return: true
     // and we're back in Main.run()...
     // report the results of the compilation
ajdtcore::Entering execution(boolean org.aspectj.tools.ajc.Main.report(boolean, IMessageHolder))
arguments (true,MessageHandler: no messages)
ajdtcore::Exiting execution(boolean org.aspectj.tools.ajc.Main.report(boolean, IMessageHolder))
return: true
ajdtcore::Exiting execution(void org.aspectj.tools.ajc.Main.run(String[], IMessageHolder)) return: null
ajdtcore::Entering execution(void org.aspectj.tools.ajc.Main.systemExit(IMessageHolder))
arguments (MessageHandler: no messages)
// its all over!