Есть ли способ поиска переменных, доступных в текущем месте в стеке во время удаленной отладки? - PullRequest
2 голосов
/ 25 октября 2011

Я удаленно отлаживаю Java-приложение и (не впервые) нахожу, что ищу значение, не зная, какая переменная может его содержать (если вообще есть). Это особенно трудно найти, так как я перебираю код библиотеки, а не собственный код, поэтому мне было интересно; Так как eclipse может отображать переменные, доступные в данный момент в стеке, вместе со всеми содержащимися значениями, есть ли способ найти их? Или, по крайней мере, выгрузить его как текст куда-нибудь и выполнить grep или что-то в этом роде.

Ответы [ 3 ]

1 голос
/ 30 апреля 2014

Вы можете попробовать evars . Я не пробовал функцию поиска, но она позволяет расширять и экспортировать все переменные в стеке в файл, который затем вы можете найти для своего значения. Я установил последнюю версию в Eclipse вручную, т.е. поместил jar в каталог dropins / plugins. Работал для меня на Eclipse 3.6.1.

1 голос
/ 04 марта 2015

Я обычно делаю экспорт в JSON, используя Джексона ObjectMapper всякий раз, когда я сталкиваюсь с необходимостью поиска среди множества значений, отловленных при отладке. При попадании в точку останова, скажем, я хочу найти некоторую строку в текстовом представлении myObj , что может быть грязным POJO с вложенными объектами. Просто оцените следующее:

org.codehaus.jackson.map.ObjectMapper mapper = new org.codehaus.jackson.map.ObjectMapper();
mapper.writeValue(new java.io.File("/tmp/myObj.json"), myObj);

, а затем перейдите grep ваше значение в файл, который вы только что создали. YMMV: если вы не знаете, с чего начать поиск, вам придется перебирать то, что доступно в стеке. Также представление JSON может не подходить для любого вида поиска.

1 голос
/ 02 ноября 2011

Я не уверен насчет запрашиваемой вами функции, но есть другой подход, который вы могли бы использовать.Предполагая, что вы знаете общую область И искомый объект не слишком распространены, eclipse поддерживает условные контрольные точки, поэтому вы можете устанавливать контрольные точки в конце методов, проверяя переменные метода и состояние объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...