Mason wrote:
> First, javac is not working for me. I'm not sure where it's failing, but it
> "just returns". I've modified /usr/local/bin/kaffe to ktrace Kaffe, and
> that generates some results - libexec/Kaffe is running - but I'm not sure
> where it's failing. I see nothing obvious in the ktrace output.

Reconfigure kaffe with --enable-debug.  Then run kaffe with '-vmdebug
list' to get a list of useful runtime debugging options.  If you think
its a jar/verifier problem try 'kaffe -vmdebug INIT,JARFILES,EXCEPTION
foo'.  I don't think there is any debugging/tracing code in the verifier.

There really should be a FAQ/FAQ.debugging.  (I could have sworn there
was one at some point, but I can't find anything useful.)

Anyway, here's a start at a FAQ.debugging file.



Debugging Kaffe
---------------

This document provides some pointers for debugging the Kaffe VM.  (Not
necessarily for debugging Java apps running on Kaffe, though you can
abuse these techniques to that end.)

-vmdebug
========

Configure Kaffe with the '--enable-debug' option.  This turns on a
bunch of debugging infrastructure in Kaffe.  Most of the
infrastructure is for tracing, but there are some sanity checks that
can be turned on (e.g., 'GCDIAG'), and other flags and settings (e.g.,
'NOGC').

Run kaffe with '-vmdebug list' to get a list of supported VM debugging
options.  Pass the options you're interested in as a comma-separated
list of names.  For example, you can use it like so:
        kaffe -vmdebug INIT,VMTHREAD,GCSYSALLOC foo

This will print some stats about initialization, VM-level threading
events, and system-level memory allocations.   Note that some of the
options are very, very verbose (e.g., 'GCALLOC' or 'ALL'.)

If you want to add more run-time tracing code, look at
kaffe/kaffevm/debug.h.  Grep for the DBG() macros to see how they're
used.


gdb
===

To run Kaffe in a debugger, use the KAFFE_DEBUG environment variable.
(Look at the Kaffe script for details).  For GDB, set KAFFE_DEBUG to
'gdb'.  ('kaffe' is a shell script so 'gdb kaffe' won't do what you
want.)

There are some gdb macros in developers/gdbinit that are useful for
looking at Kaffe's GC and object structures (in particular, look for
'pobject').  Some of the macros are out of sync wrt to the actual
structures, so you may have to update them.  Comments in the file
explain how to use it.

Also, look at FAQ.xdebugging for a mechanism for including Java
symbols in backtraces in GDB.  If you're going to debug Kaffe on a
regular basis, you should always include the xdebugging support.


Other Stuff
===========

Debugging Performance: Look at FAQ.timing and FAQ.xprofiling for
details on getting performance information out of the VM.

Regression Testing: Regression tests are kept in test/regression/.
Regression tests are just simple stand-alone .java programs.  They
have special comments at the end that influence how the tester treats
their output.  To add a new test, just add it to Makefile.am and
regenerate the Makefile.in, and re-configure.

Reply via email to