<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    J2EE,Documentum,GWT,EJB學習路程

    為了所愛的,和愛我的人努力

     

    Java Debug

    在編程的生涯中,最重要就是能Debug,我最近在玩documentum6.0的內置中間件weblogic,所以Remote Debug是少不了的。
    先說幾個概念(這是我在網上查的):
        1.什么是JPDA:
            Java Platform Debugger Architecture(JPDA:Java平臺調試架構) 由Java虛擬機后端和調試平臺前端組成 :
                a.Java虛擬機提供了Java調試的功能
                b.調試平臺通過調試交互協議向Java虛擬機請求服務以對在虛擬機中運行的程序進行調試
           JPDA架構:
              JPDA通過兩個接口和協議來完成如上的說明,分別是JVMTI(Java虛擬機工具接口)、JDWP(Java調試連線協議)和JDI(Java調試接口)。
                a.JVMTI定義了虛擬機應該提供的調試服務,包括調試信息(Information譬如棧信息)、調試行為(Action譬如客戶端設置一個斷點)和通知                      (Notification譬如到達某個斷點時通知客戶端),該接口由虛擬機實現者提供實現,并結合在虛擬機中
                b.JDWP定義調試服務和調試器之間的通信,包括定義調試信息格式和調試請求機制
                c.JDI在語言的高層次上定義了調試者可以使用的調試接口以能方便地與遠程的調試服務進行交互,Java語言實現,調試器實現者可直接使用該接口訪問虛                擬機調試服務。
           運行方式:
              當虛擬機的調試服務運行時,虛擬機作為調試的服務提供端,監聽一個連接,而調試器通過該連接與虛擬機進行交互。目前,Windows平臺的JVM提供了兩 種          方式的連接:共享內存和 Socket連接,共享內存的服務提供端和調試端只能位于同一臺機,而Socket連接則支持不同異機調試,即遠程調試。
           虛擬參數配置:
              a.啟用調試服務
            -Xdebug 啟用調試
            -Xrunjdwp:<sub-options> 加載JVM的JPDA參考實現庫
              b. Xrunjdwp子參數(sub-options)配置
                 Xrunjdwp子參數的配置格式如下
                 -Xrunjdwp:<name1>[=<value1>],<name2>[=<value2>]...
              c.例子
                 -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>是可用的共享內存
        2.基本原理
          
    服務器端在啟動的服務器的同時,也把JPDA明確的啟動起來,分配一個端口號,那么你在客戶端只要連接上JPDA服務(sun稱為工具平臺)便能測試了。
        3.Tomcat 實例
          
    打開tomcat的bin目錄,找到catalina.bat, 用記事本打開它。
            找到set JPDA_OPTS=-Xdebug -Xrunjdwp:transport=%JPDA_TRANSPORT%,address=%JPDA_ADDRESS%,server=y,suspend=%JPDA_SUSPEND%,
            改為set JPDA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=5500,server=y,suspend=n
            這樣就打開了5500端口,然后你到bin目錄下運行jpda start,你再去監聽5500端口,就可以實現remote debug了。
          

    posted on 2008-06-18 19:11 田亮 閱讀(934) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    常用鏈接

    留言簿(4)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    相冊

    MyHome

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲精品久久久久无码AV片软件| 亚洲视频在线观看| 亚洲人成在线免费观看| 免费人成再在线观看网站| 亚洲午夜一区二区电影院| 亚洲国产精品无码专区在线观看 | 中文字幕人成人乱码亚洲电影| 国产福利在线观看免费第一福利| 成人性生交大片免费看中文| 麻豆va在线精品免费播放| 日本视频一区在线观看免费| 老司机69精品成免费视频| 免费大片av手机看片高清| 亚洲AV无码专区亚洲AV桃| 亚洲一级毛片免费看| 亚洲高清视频免费| 亚洲国产成人一区二区三区| 国产亚洲午夜高清国产拍精品| 亚洲AV网站在线观看| 国产网站免费观看| 香蕉视频在线观看免费国产婷婷| 午夜国产精品免费观看 | 亚洲噜噜噜噜噜影院在线播放| 亚洲免费视频网站| 亚洲an天堂an在线观看| 亚洲日韩欧洲无码av夜夜摸| 亚洲欧洲精品成人久久曰影片| 亚洲av成人一区二区三区在线观看 | 德国女人一级毛片免费| 亚洲中文无码永久免费| 国产精彩免费视频| 91频在线观看免费大全| A在线观看免费网站大全| 日韩版码免费福利视频| 国内免费高清在线观看| 成人免费a级毛片无码网站入口 | 亚洲一区二区三区不卡在线播放| 亚洲另类视频在线观看| 亚洲婷婷第一狠人综合精品| 亚洲欧美日韩一区二区三区在线| 亚洲av永久无码精品秋霞电影秋 |