#java #eclipse #ide #breakpoints
#java #eclipse #ide #точки останова
Вопрос:
В данный момент я пытаюсь провести рефакторинг некоторого довольно ужасного кода. Он передает объекты очень запутанным образом, который я не могу отследить, и, по-видимому, напрямую обращается к примитивам внутри объектов в каком-то другом месте кода. Я пытаюсь выяснить, как я могу использовать отладчик, чтобы выяснить, когда / где используется интересующий меня объект после его передачи в запутанный черный ящик кода, который передает эти объекты.
Чего бы я хотел, так это способа установить контрольные точки, которые прерываются при изменении объекта (или примитива). Я знаю, что точки наблюдения могут быть установлены для переменных, но это не то, что я хочу. Переменная, указывающая на интересующий меня объект, исчезает в конце вызова функции, мне нужен способ продолжить отслеживание объекта после возврата этой функции.
Кто-нибудь может сказать мне, есть ли у Eclipse такая функциональность? Я использую Helios.
Спасибо
Ответ №1:
Вы можете установить точку наблюдения для каждого поля интересующего вас класса.
В качестве альтернативы вы можете найти все места в источнике, ссылающиеся на определенное поле, используя иерархию вызовов (щелкните по полю и нажмите Ctrl-Alt-H). Преимущество этого заключается в том, что вы находите не только место доступа к полю при конкретном выполнении программы, но и все возможные варианты выполнения.
Обратите внимание, что ни один из методов не заметит, осуществляется ли доступ к полю с использованием отражения.
Комментарии:
1. Хороший вызов по этому последнему пункту. Чтобы выполнить еще более тщательный поиск, пользователь должен также выполнить поиск возможных вызовов отражения. Это можно сделать довольно легко, выполнив полнотекстовый поиск (Ctrl H) и выполнив поиск по имени поля в вопросах.