Тогда иди с AspectJ

у проследить начало [и окончание] функций, вызываемых в Java, например, следующий код:

    public void foo() {
  System.out.println("begin of foo()");
  ...
  System.out.println("e-n-d of foo()");
 }

Но ведение кода дампаSystem.out.println это что-то утомительное и подверженное ошибкам, поскольку в классе могут быть десятки функций.

Любая хорошая идея может облегчить эту работу? Я не хочу выписывать дампы по всему файлу.

Реализация обоих или одного из начального и конечного следов является допустимым.
Но, если это невозможно, записи о том, что функция была вызвана, также полезны. Я имею в виду, что не имеет значения точное начало и конец, просто сказать, что функция была вызвана.

Ответы на вопрос(4)

Ваш ответ на вопрос