I have come up with the following pointcut that I use for tracing method entry/exit. It's not broken and also does what I want but: 1- I find it looks clumsy or could be more elegant; and 2- I don't know if it is bulletproof.
// tracing the execution of all methods except:
// - toString and descendants
// - methods identified with @NotTraced and descendants
pointcut theMethod() :
within(*.*) &&
!within(tracing.*)
&& execution(* *(..))
&& !adviceexecution()
&& !cflow(adviceexecution())
&& !execution( String *.toString() )
&& !cflow(execution( String *.toString() ))
&& !execution( @NotTraced * *(..) )
&& !cflow(execution( @NotTraced * *(..) ));
Any thoughts?