Отладка Java - смотреть переменную вне области видимости - PullRequest
6 голосов
/ 13 сентября 2011

При отладке приложения C / C ++ я могу создать отслеживание адреса, приведенного к типу указателя, а затем просмотреть это содержимое структуры, даже если оно выходит из области видимости. Можно ли добиться чего-то подобного в Java?
Допустим, я нахожусь в методе, я добавляю часы к чему-то вроде «& this», а затем, когда я покидаю метод класса, я все еще могу видеть его содержимое, даже если оно выходит за рамки?

Я почти уверен, что ответ на мой вопрос "нет", поэтому меня больше всего интересует "Почему нет?" объяснение. Это ограничение JVM? Ограничение JPDA? Есть ли лучшее место, чтобы задать такой специализированный вопрос?

Ответы [ 2 ]

1 голос
/ 13 сентября 2011

В C / C ++ вы наблюдаете (область, на которую указывает) произвольный указатель, приводя к этой переменной.

В Java нет указателей.Вы можете только watch переменная.Вне сферы его не существует.

Зачем вам все-таки смотреть?Если вы положите на него часы, они будут правильно смотреться в поле зрения.

0 голосов
/ 13 сентября 2011

Нельзя смотреть переменную, которая не находится в области видимости.

Однако вы можете наблюдать тот же объект, если найдете другую переменную, которая указывает на него.

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

Уровень JavaИнструменты отладки по-прежнему работают поверх управления памятью JVM, поэтому вам нужна правильная ссылка на объект, вы не можете просто посмотреть на случайные области памяти.

...