2016-09-17 2 views
1

Я пишу скрипты с Java api, которые компилируются в файлы классов и выполняются с моей точки зрения на виртуальной машине (у меня нет доступа к этой виртуальной машине и я не могу отлаживать мои файлы классов изнутри.) Эти сценарии требуют, чтобы наблюдаемые данные выполнялись и не запускались должным образом, если они не были выполнены на этой виртуальной машине. Как следствие того, что эти файлы классов выполняются, насколько мне известно, я не могу отлаживать их с помощью встроенного отладчика IDE.Что сейчас делает java?

У меня на самом деле нет словарного кодирования, чтобы даже искать ответы на это последнее утверждение, поэтому, пожалуйста, исправьте меня, если я ошибаюсь.

В любом случае, единственный способ, который я определил, позволит мне отлаживать эти сценарии, является классическим методом print-statement. Это ужасно. Но это работает. И кажется, что все сообщество для api использует этот метод.

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

Что бы я хотел сделать, это следить за выполнением моего сценария шаг за шагом (при каждом вычислении виртуальной машины) и хранить информацию об этих вычислениях (переменная «foo» в классе «bar» становится 4 в строке «soandso») в виде своего кеша, который сбрасывается на системную консоль всякий раз, когда возникает ошибка.

Возможно ли это?

+1

Вы должны рассмотреть регистратор. Это похоже на заявления печати, за исключением того, что вы можете указать уровни журналов (debug, info, warning, error), и вы можете выбрать запись в файл, а также stdout (например, инструкцию печати). Если у вас есть доступ к виртуальной машине, вы также можете загрузить журналы. – algrebe

+0

Какая IDE вы используете, что не позволяет отлаживать? – Codebender

+1

Не уверен, что я полностью следую этому вопросу, удаленная отладка Java, что вам нужно делать? Это возможно с Eclipse по крайней мере. – paisanco

ответ

0

Вы можете посмотреть dynamic proxies.

Here - очень хорошее объяснение.

С динамическим прокси вы можете выводить (регистрировать, отправлять как почту, ...) метод, который вызывается, и параметры, которые передаются методу.

Это не совсем то, что вы ищете, но, возможно, это поможет вам.

Смежные вопросы