JPDA:Java平台調試架構(常用的遠端偵錯方法)

來源:互聯網
上載者:User

  最近使用WTP的Server功能很不爽,連tomcat伺服器時java類中的任何改動都要重啟伺服器,一怒之下就改用JPDA了,以下是一些總結。

  什麼是JPDA
  Java Platform Debugger Architecture(JPDA:Java平台調試架構) 由Java虛擬機器後端和調試平台前端組成
  1.Java虛擬機器提供了Java調試的功能
  2.調試平台通過調試互動協議向Java虛擬機器請求服務以對在虛擬機器中啟動並執行程式進行調試

  JPDA的構架
  JPDA通過兩個介面和協議來完成如上的說明,分別是JVMTI(Java虛擬機器工具介面)、JDWP(Java調試連線協議)和 JDI(Java調試介面)。
  1.JVMTI定義了虛擬機器應該提供的調試服務,包括調試資訊(Information譬如棧資訊)、調試行為(Action譬如用戶端設定一個斷點)和通知(Notification譬如到達某個斷點時通知用戶端),該介面由虛擬機器實現者提供實現,並結合在虛擬機器中
    2.JDWP定義調試服務和調試器之間的通訊,包括定義調試資訊格式和調試請求機制
    3.JDI在語言的高層次上定義了調試者可以使用的調試介面以能方便地與遠端調試服務進行互動,Java語言實現,調試器實現者可直接使用該介面訪問虛擬機器調試服務。

  運行方式
  當虛擬機器的調試服務運行時,虛擬機器作為調試的服務提供端,監聽一個串連,而調試器通過該串連與虛擬機器進行互動。目前,Windows平台的 JVM提供了兩種方式的串連:共用記憶體和 Socket串連,共用記憶體的服務提供端和調試端只能位於同一台機,而Socket串連則支援不同異機調試,即遠端偵錯。

  虛擬機器參數設定
  1.啟用調試服務
    -Xdebug 啟用調試
    -Xrunjdwp:<sub-options> 載入JVM的JPDA參考實現庫
  2.Xrunjdwp子參數(sub-options)配置
    Xrunjdwp子參數的配置格式如下
     -Xrunjdwp:<name1>[=<value1>],<name2>[=<value2>]...

  幾個例子
  -Xrunjdwp:transport=dt_socket,server=y,address=8000
  在8000連接埠監聽Socket串連,掛起VM並且不載入運行主函數直到調試請求到達
  -Xrunjdwp:transport=dt_shmem,server=y,suspend=n
  選擇一個可用的共用記憶體(因為沒有指address)並監聽該記憶體串連,同時載入運行主函數
  -Xrunjdwp:transport=dt_socket,address=myhost:8000
  串連到myhost:8000提供的調試服務(server=n,以調試用戶端存在),掛起VM並且不載入運行主函數
  -Xrunjdwp:transport=dt_shmem,address=mysharedmemory
  通過共用記憶體的方式串連到調試服務,掛起VM並且不載入運行主函數
  -Xrunjdwp:transport=dt_socket,server=y,address=8000,
  onthrow=java.io.IOException,launch=/usr/local/bin/debugstub
  等待java.io.IOException被拋出,然後掛起VM並監聽8000連接埠串連,在接到調試請求後以命令/usr/local /bin/debugstub dt_socket myhost:8000執行
   -Xrunjdwp:transport=dt_shmem,server=y,onuncaught=y,launch=d:/bin/debugstub.exe
  等待一個RuntimeException被拋出,然後掛起VM並監聽一個可用的共用記憶體,在接到調試請求後以命令d:/bin /debugstub.exe dt_shmem <address>執行,<address>是可用的共用記憶體

  啟動tomcat
    -Xdebug -Xrunjdwp:transport=%JPDA_TRANSPORT%,address=%JPDA_ADDRESS%,server=y,suspend=n

    以上兩行是tomcat5.5.12的catalina.bat檔案中的一句,可以看出tomcat在JPDA方式下是怎麼啟動的,啟動tomcat要用 catalina jpda start來啟動,不能用startup.bat啟動,啟動前設定好JPDA_TRANSPORT,JPDA_ADDRESS就OK了

    另有一篇文章http://www.blogcn.com/u2/38/21/ayufox/blog/36956440.html 介紹如何使用Eclipse構建測試平台

本文出處:http://www.javaeye.com/topic/75128

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.