[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] debugging aspected code

Wes, while i find your explanation very interesting and helpful i do have the
impression that we are talking about two different pair of shows here.;-)

Debugging aspectj code *outside* of eclipse (this is what you have elaborated
on if i understood you right) is one thing. Using the eclipse IDE to debug code
in it's own debugger is a totally different story. (As far as i understood the mail
from Chris this is what his mail was about. chris pls correct me if i'm wrong
here.) The bug number i posted is about adding jsr-45 support to the *eclipse
debugger*. as long as the eclipse debugger doesn't support jsr-45, debugging
aspectj code using the eclipse debugger is not supported.

For experimental usage of aspectj code i don't see a problem working with a basic
comand-line set of tool. For using aspects in a mission critical environment (what i
would like to do), support of a seamless debug session is a must. otherwise it's a
show stopper.

-- mark

Wes Isberg wrote:

What Mark wrote is true but might be confusing to readers;
because we build on the eclipse compiler, they might think
that the eclipse bug needs to be fixed before .class files
produced by AspectJ support JSR-145, which is not true.


- if the line in question is not in an aspect, everything should work as usual in 1.0 and 1.1
(if not, it's a bug).

- .class files produced by AspectJ 1.1 do not comply
 with JSR-45, but those produced by 1.0 do.  This is
 currently a known bug/limitation.

- i.e., if the line in question is in an aspect
 and you are using AspectJ 1.0
 and your VM and your debugger client support JSR-45,
 then you should be able to step into and out of the
 aspect source and set breakpoints there.

- The eclipse debugger does not support JSR-45, but
 Sun's jdb in J2SE 1.4.1 does (and others might as well).

- For AspectJ 1.1 to support JSR-45 means fixing the
weaver and BCEL. I am not sure if this is required before 1.1 goes final (though I'd like it to be).


For those less in the know, here's some more detail and background:

AspectJ 1.0 supported JSR-45, but AspectJ 1.1 support
still needs to be developed, last I heard.  (BCEL needs to
be upgraded to pass the information through.)  I believe
ordinary line number information is still available, but I
haven't checked.

There are two ways to associate line numbers in .class
files, the old way and JSR-145 (which supports having many source
files for a class (etc.). Running an application on a VM that supports JSR-45 (like Sun's 1.4.1) makes both forms
to a debugger client of the VM debugging API's (JPDA). Those
clients that use the high-level API's strictly should work
upgrade with the JSR-145-supplied lines, because they don't
change the debugger interface. However, many debuggers make
assumptions that violate the API (e.g., the relative
of types, etc.). The eclipse bug suggests that the Eclipse
debugger is one of these or that it uses lower-level API's.
In J2SE 1.4.1, Sun's jdb works to step through aspects.

Mark wrote:


pls look at http://bugs.eclipse.org/bugs/show_bug.cgi?id=25798 which
describes the
current situation. you can also search the eclipse.technology.ajdt
(look for 'jsr 145').

the problem is, that *eclipse* must support jsr 145 in order to allow
you to debug code
that has aspect stuff weaved into.

-- mark

Chris Nelson wrote:

I've just begun my first forays into AspectJ and like others, am amazed
and impressed.  But before I could really be able to work with it for
real world stuff, I need to get debugging working and am not having any
luck thus far.  I am using AspectJ 1.1.b2 and using the iajc ant task to
do builds.  When I then attempt to debug code that has been touched by
an aspect, my debugger (Eclipse 2.1) complains about not finding line
numbers, even tho I have tried passing both debug=true and
debuglevel="lines,vars,source" as attributes of the iajc task.  I don't
know if this is a problem specific to Eclipse or just a known issue with
the 1.1 beta, but I would appreciate any help.  Any info on how other
people are debugging Aspects (please include AspectJ version, IDE, JDK
version, and so forth) would also be greatly appreciated.  I don't think
I'm doing using any features new to 1.1 so I could downgrade AspectJ if
I need to.   But all in all, the promise of aspects just has me
drooling.  Awesome job, AspectJ team!

Thanks in advance,

Chris Nelson

aspectj-users mailing list

aspectj-users mailing list

aspectj-users mailing list