eclipse中tomcat的源碼調試整理版_第1頁
已閱讀1頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Eclipse 中 Tomcat 的源碼調試整理版1、介紹為了研究 Tomcat 源碼,我們通常需要通過調試(Debug)這種方式來一步步查看它的處理流程。對于代碼的調試類型,有本地調試為遠程調試兩種。本地調試指的是在 Eclipse 環(huán)境中通過 Tomcat插件的方式來啟動 Tomcat 進程,這種方式能調試大部分源碼,但對某些組件比如 juli 日志無能為力;遠程調試指通過腳本啟動 Tomcat 進程后,在 Eclipse 中使用“

2、Remote Java Application”連接上Tomcat 進程,從而進行源碼跟蹤的調試方式。遠程調試優(yōu)于本地調試。2、腳本中的設置為了進行遠程調試,需要在腳本 catalina.bat 中添加 JVM 參數(shù),建議在腳本文件起始注釋完后的第一行進行設置,如下所示:rem $Id: catalina.bat 1146097 2011-07-13 15:25:05Z markt $rem --------------------

3、-------------------------------------------------------set “CATALINA_OPTS= -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 “如果是非 windows 環(huán)境,則需要在 catalina.sh 腳本中添加,如:#

4、$Id: catalina.sh 1476739 2013-04-28 09:13:33Z jfclere $# -----------------------------------------------------------------------------CATALINA_OPTS=“-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,se

5、rver=y,suspend=y,address=8000 “各參數(shù)介紹如下:參數(shù) 描述-Xdebug 啟用調試特性,必須的。-Xnoagent The switch disables the old mechanism of communication between a debugger and a debugee. The mechanism was used mainly at times of JDK 1.1.x. It us

6、ed packages “sun.tools.debug“ and “sun.tools.agent“. JDK 1.4.x no longer contains the packages (i.e. it does not support the old mechanism) but it still accepts the switch.舊的通訊機制,1.4 以后的版本已經(jīng)不用了,配置了該選項不會報錯但已無意義。4、附錄4.1、JP

7、DA 介紹JavaTM Platform Debugger Architecture ,簡稱 JPDA。JPDA 為 Java 平臺上的調試器定義了一個標準的體系結構。該體系結構包括 3 個主要組成部分:JVM TI、JDI 和 JDWP。JVM TI 的全稱是 Java Virtual Machine Tool Interface,它定義了 JVM 為了支持調試而必須提供的功能及相應的訪問接口。這些訪問接口是以本地語言的形式提供的,由

8、 JVM(比如 Sun 公司的HotSpot VM)負責實現(xiàn)。不過,JVM TI 只是 JVM 提供的一系列函數(shù),調試器(特別是遠程的調試器)如何調用呢?其實啊,JVM TI 的直接客戶端并不是調試器,而是一個稱為“JPDA back-end”的東東。這個東東應該是屬于 JVM 的一部分,在 SUN JRE 的 bin 目錄下可以找到 jdwp.dll(jdwp.so)的庫文件,這就是 JPDA back-end 的實現(xiàn)。按我理解,J

9、PDA back-end 提供了各種訪問方式(共享內存,Socket) ,通過這些方式接收調試器的請求,然后調用 JVM TI 接口。JDI 的全稱是 Java Debug Interface,它定義了訪問 JVM TI 接口的高層 API,以純 Java 語言提供,由 JDK 實現(xiàn)(在 Sun JDK 的 tools.jar 可以找到) 。調試器直接使用 JDI 來實現(xiàn)調試的功能。與JPDA back-end 相對應,JDI 實現(xiàn)

10、的角色就是 JPDA front-end。JDWP 的全稱是 Java Debug Wire Protocol,它定義了 JPDA front-end 和 JPDA back-end 之間通訊信息的二進制格式。這里的通訊信息主要包括兩種:調試器發(fā)送給 JVM 的請求信息和 JVM 發(fā)送給調試器的調試信息。4.2、-Djava.compiler=NONE本設置禁止使用 JIT 轉義器,加快 debug 的速度。jvm 在執(zhí)行 class

11、文件時,會將 java 字節(jié)碼轉換成本地機器碼,有兩種利器:JIT 和轉義器(interpreter) 。? 轉義器(interpreter):每次執(zhí)行 class 文件,jvm 都會將字節(jié)碼轉換成微指令,然后按照順序依次執(zhí)行,有時一個 java 指令會被轉義成十幾個微指令。因此執(zhí)行效率非常低。? JIT:針對 interpreter 的瓶頸,JIT 技術在第一次執(zhí)行 class 文件時,對其進行一次編譯,會被精簡成原生態(tài)指令碼。經(jīng)過一

12、次編譯后,下次再執(zhí)行相同的 class 時,就不需要編譯了。因此,對頻繁執(zhí)行的 class 使用 JIT 技術進行轉義,整體執(zhí)行效率會非常高。由于第一次執(zhí)行時,要進行徹底轉義,因此會非常耗時。因此,interpreter 和 JIT 各有優(yōu)缺點:? interpreter:針對執(zhí)行次數(shù)極少的 class 文件,interpreter 性能更好。? JIT:對于頻繁執(zhí)行的 class 文件,JIT 技術更優(yōu)。回到 debug 模式下為什么

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論