Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Как в отладчике найти переменные, указывающие на определённый объект? / 5 сообщений из 5, страница 1 из 1
06.09.2013, 22:28:42
    #38389731
avp.mk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в отладчике найти переменные, указывающие на определённый объект?
Как в отладчике имея "адрес" (Число которое вернул native int hashCode() класса Object - это же адрес?) найти переменные, которые на него указывают?

Есть лог, содержащий:
Код: sql
1.
FINER: javafx.scene.layout.Region resize VirtualFlow$ClippedContainer@12c4d93 resized to 288.0 x 28.0


Я хочу поискать объекты с хэшем 0x12c4d93 и ссылки на них.

Класс в котором примерно должна быть переменная - известен (но возможно она находится в его предках\полях).
Желательно в NetBeans (но если знаете только как сделать в каком-нибудь другом инструменте - все равно интересно).
...
Рейтинг: 0 / 0
06.09.2013, 22:42:57
    #38389737
DEVcoach
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в отладчике найти переменные, указывающие на определённый объект?
1) Штатных инструментов, что бы получить такое на бегущей JVM нет.
2) Можно поискать через хип дампы, воспользовавшись MAT или VisualVM.
3) Самый простой способ - скачать исходники JavaFX, и поставить брейкпоинт на соответствующей строке. Если требуемых исходников нет (JavaFX не полностью открыт), то скачать исходники логгера, и поставить брейкпоинт в методе, который отпечатывает FINER с условием. В условии вбить имя класса, из которого должно прийти сообщение.
Наконец, вы можете запихнуть в конфигурацию slf4j свою реализацию, и поставить брейкпоинт в ней.

Третий метод значительно проще и быстрее, чем копание в хипдампе.
...
Рейтинг: 0 / 0
06.09.2013, 23:10:06
    #38389754
avp.mk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в отладчике найти переменные, указывающие на определённый объект?
DEVcoach, спасибо за быстрый ответ.

Я скачал исходники javafx 2.2 (нужные классы есть (com.sun.javafx.logging.PlatformLogger не искал)).
Собрал в NetBeans (проекты были для IDEA). Немного модифицировал класс javafx.scene.control.ComboBox, но не смог запустить свой проект так чтобы использовался модифицированный ComboBox. Сделал рефакторинг (переименовал пакет javafx.scene.control в ru.javafx.scene.control (и в своём проекте использовал этот пакет)) - не заработало.

Вопрос - как прикрутить исходники javafx 2.2 (хотя можно и 8) чтобы их можно было модифицировать.
...
Рейтинг: 0 / 0
06.09.2013, 23:16:30
    #38389759
DEVcoach
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в отладчике найти переменные, указывающие на определённый объект?
avp.mk ,
А зачем вам их модифицировать? Вам надо просто подключить их к проекту, и поставить брейкпоинт в том месте, откуда прет это сообщение.
...
Рейтинг: 0 / 0
08.09.2013, 13:49:02
    #38390295
avp.mk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в отладчике найти переменные, указывающие на определённый объект?
DEVcoachВам надо просто подключить их к проекту, и поставить брейкпоинт в том месте, откуда прет это сообщение.
Исходиков на используемый логгер (com.sun.javafx.logging.PlatformLogger) - нет.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Как в отладчике найти переменные, указывающие на определённый объект? / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]