最近協助QA測試我們基於EJB開發的系統由於應用程序在遠程環境下運行並且在控制台和日志文件中沒有輸出足夠的有用信息導致調試工作很困難這時發現了Sun的java平台調試架構(Java Platform Debugger Architecture)它能夠對一個運行中的java應用程序進行全方位調試提供極大的幫助
JPDA是一組接口與協議JPDA主要由三個部分構成
Ø Java虛擬機工具接口(JVMTI)定義虛擬機(VM)在調試時必須提供的服務包括調試信息(如棧信息)調試行為(如客戶端設置一個斷點)和通知(如到達某個斷點時通知客戶端)
Ø Java調試線協議(JDWP)定義在調試過程和調試器前端之間傳輸的信息和請求的格式
Ø Java調試接口(JDI)定義了調試者可以使用的調試接口以方便與遠程的調試服務進行交互
當虛擬機的調試服務運行時虛擬機作為調試的服務提供端監聽一個連接而調試器通過該連接與虛擬機進行交互調試器都支持兩種方式的連接共享內存(被調試者和調試器位於同一系統)和 Socket連接(被調試者和調試器可位於任何地方包括同一系統)如果使用socket鏈接則在對應的JVM中以dt_socket為名確定自變量的類型如果被調試者和調試器位於同一機器之中且運行的是Windows系統則可以使用名為dt_schmem的共享內存連接
JVM參數設置
Ø Xdebug
啟用調試
Ø Xrunjdwp<name>[=<value>]<name>[=<value>]……
加載JVM的JPDA參考實現庫
Ø server(是y或否n)
如server=y收到一個要依附的調試應用程序如server=n依附到指定地址的調試應用程序
Ø address
連接傳送地址如果server=n嘗試依附到這個地址調試應用程序如server=y收到這個地址的連接
Ø timeout
如果server=y它以毫秒為單位指定等待調試器依附的時間如server=n它以毫秒為單位指定依附到調試器所用的時間
Ø suspend
如是JVM延緩執行直到調試器與被調試JVM建立連接
將jvm參數添加至weblogic server的配置中即可開啟remote debug模式如
Xdebug Xnoagent piler=none
Xrunjdwp:server=ytransport=dt_socketsuspend=naddress=
是server監聽的調試端口可通過env | grep WL_REMOTE_DEBUG_PORT 找出運行環境中weblogic的調試端口
設置完成後重啟weblogic將會在啟動日志中看到信息
Listening for transport dt_socket at address:
Eclipse設置
首先配置一個remote launch
雙擊Remote Java Application
填充遠程主機的IP和之前設置的端口號
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26319.html