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