這是今天早晨我和一個網(wǎng)友關(guān)于eclipse調(diào)試原理的聊天記錄,希望對大家有幫助:
小魚 說:
你說了解JAVA的編譯機制和熟練使用調(diào)試,最好的方法是不是去閱讀eclipse的源代碼啊
楊中科 說:
編譯機制?要了解編譯機制的話最先肯定要把編譯原理搞清楚呀,eclipse本身是不負(fù)責(zé)編譯java代碼的,它是委托給JDK去編譯的,因此要了解java的編譯機制肯定要去閱讀jdk的源碼的
楊中科 說:
不過jdk的編譯器部分的源碼好像沒有開放
楊中科 說:
使用調(diào)試也不用去看源碼,功能很簡單的
小魚 說:
是啊,我覺得eclipse的調(diào)試很有用啊,尤其是你以前講過的那個jsp的調(diào)試,學(xué)問很深啊
楊中科 說:
原理上并不難,因為eclipse是把調(diào)試請求通過jpda協(xié)議發(fā)給jdk來完成的,eclipse本身不提供java代碼的編譯和調(diào)試機制
小魚 說:
這就是實時監(jiān)測虛擬機的運行狀態(tài)吧
楊中科 說:
不過讀懂了eclipse的java調(diào)試部分的代碼你就也可以寫出一個java的調(diào)試器出來
小魚 說:
斷點就是給程序一個中斷是吧?
小魚 說:
是的
楊中科 說:
不是實時檢測,是一個請求、應(yīng)答的模式
楊中科 說:
比如我們在java的編譯器的第五行放了一個斷點,那么代碼調(diào)試起來以后,eclipse就告訴運行環(huán)境“請在第五行停下來”,那么運行環(huán)境就會在第五行停下來。然后你想看看i這個變量的值,eclipse就會向運行環(huán)境請求“請告訴我i等于多少”,然后運行環(huán)境就將i的值告訴eclipse,eclipse就將這個值顯示給你。原理非常簡單
小魚 說:
也就是程序掛起吧?
楊中科 說:
eclipse只是充當(dāng)了一個介紹人的角色
楊中科 說:
不明白程序掛起具體指的什么,不過應(yīng)該就是你理解的意思
小魚 說:
也是,一個和用戶直接打交道的UI
楊中科 說:
對
http://www.tkk7.com/huanzhugege/
?