Java-эквивалент Lisp TRACE - PullRequest
       7

Java-эквивалент Lisp TRACE

0 голосов
/ 25 ноября 2018

Я пытаюсь отладить некоторый Java-код, включающий сложные взаимно-рекурсивные функции, и желаю использовать средство отладки, с которым я сталкивался только в Лиспе, и задаюсь вопросом, существует ли способ реализовать его эквивалент.

В Лиспе вы можете пометить функцию для трассировки, и затем каждый раз, когда она вызывается, заметка будет выводиться на консоль вместе со значениями аргументов.(Хорошо, это довольно легко взломать на любом языке.) Каждый раз, когда он возвращается, будет напечатана заметка вместе с возвращаемым значением.(Это сложнее и ценнее.) Наконец, часть того, что делает его действительно ценным, рекурсивные вызовы отмечены отступом.Пример из http://clhs.lisp.se/Body/m_tracec.htm, если факториальная функция FACT определена рекурсивно:

;; Of course, the format of traced output is implementation-dependent.
 (fact 3)
>>  1 Enter FACT 3
>>  | 2 Enter FACT 2
>>  |   3 Enter FACT 1
>>  |   | 4 Enter FACT 0
>>  |   | 4 Exit FACT 1
>>  |   3 Exit FACT 1
>>  | 2 Exit FACT 2
>>  1 Exit FACT 6
=>  6

Есть ли способ сделать что-то подобное в Java?

...