2010-05-04 45 views
5

這是一個對我提出的面試問題..我隱約地回答它使用Java反射..但我不確定。這是如何運作的?Eclipse調試器如何獲取有關類內私有變量的信息?

+0

...以及它在調試模式下如何暫停執行?我不知道答案,(因此我張貼評論),但我猜想它有它自己的虛擬機?看到答案會很有趣。 – aioobe 2010-05-04 09:34:40

+0

@aioobe與主要問題相同的答案:它使用java調試器,它是java框架的一部分:) – dube 2010-05-04 11:26:50

+0

是啊:)我想到了:) – aioobe 2010-05-04 11:32:24

回答

9

您的問題的關鍵幾乎肯定是java.lang.reflect.AccessibleObject,它允許調試器關閉訪問控制檢查和捅。 Spring使用相同的機制來訪問依賴注入的變量。

7

它使用提供命令Java Debugger做到這一點:

jdb print myObj.myInstanceField 

回到舊時代真有人們在命令行上這樣做! :)

注意:要顯示本地變量,包含類必須已使用javac -g選項編譯。