debug 調試原理理解


引言:  

  昨天,看了一篇文章,很受啟發,記得之前聽別的人遠程調試過代碼,覺得很神奇,在自己程序里打斷點,連接遠程服務器,開啟調試后可以調用遠程方法來看數據的輸入和輸出,不需要查找問題,重新部署,測試問題,直接遠程調試,看運行結果,感覺很方便。

 

分析:

  那么,它是怎么實現的呢?

  首先,我想的問題是,它怎么知道我本機的斷點在哪?我本機又是怎么輸入輸出數據?

  之后,我在想本地調試為什么可以?怎么加入的斷點?

 

我的觀點:

  看了那篇文章之后,了解了在c程序里,如果以調試模式運行,會把程序的斷點翻譯成一個中斷【int 3】,運行到斷點處,就保存執行狀態,執行父級監控操作,之后父級更新子級的執行狀態,載入保存信息,繼續執行程序。

  在【java】里,有JVM的存在,可以省好多事,分三層

  1.JVMIT【虛擬機接口】,底層

  2.JDWP【虛擬機傳輸協議,格式】,中間傳輸

  3.JDI【程序調試接口】,發送指令控制接口

  我個人理解是,把水流切斷,處理,再放回去,對執行透明,比較像面向切面編程

  而本機部署有熱加載能力,可以把修改類或者斷點生成的中斷及時加載到運行程序里,run模式就不可行

  像解剖一樣,想看了,切開看看,看完再還原回去繼續運行,【高維監視】

 

文章鏈接:  

  http://blog.jobbole.com/23463/  【中斷原理】

  https://www.ibm.com/developerworks/cn/java/j-lo-jpda1/  【JVM調試原理】


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM