使用Eclipse遠端偵錯及原理

來源:互聯網
上載者:User

標籤:eclipse   java   虛擬機器   遠端偵錯   linux   

今天定位Linux Server端的Java應用程式的問題,使用了 Eclipse 遠端偵錯 Java 應用程式,這恐怕是定位Server端最常見也是最根本的方法,居然至少有兩位有好幾年開發經驗的同事都不知道這個方法,我也感覺十分詫異。

本文在介紹使用Eclipse遠端偵錯Java應用程式之外,著重解析了遠端偵錯的原理。

JVM原理

眾所周知,Java由於引入了虛擬機器JVM,擁有了很好的跨平台和安全性,.java檔案由Javac編譯成.class檔案也叫位元組碼檔案,位元組碼檔案由JVM執行,並由翻譯器翻譯成各個機器認識的不同的機器碼(0101010010101),這樣,JVM支援了Java 的跨平台性。

遠端偵錯的應用情境

遠端偵錯很有用,特別是當你的開發環境在Window,又在遠端Linux Server或者移動平台上運行Java應用程式,Java提供了一系列的介面和協議讓本地Java檔案於遠端JVM建立聯絡和通訊。

調試器架構

根據 Sun 的 JPDA 規範,用於調試的程式常常被稱為debugger, 而被調試的程式稱為 debuggee,下面圖1給出了調試器的架構。


             Components                      Debugger Interfaces                 /    |--------------|                /     |     VM       | debuggee -----(      |--------------|  <---- JVMTI - Java VM Tool Interface                \     |   back-end   |                 \    |--------------|                 /           | comm channel --(            |  <------------ JDWP - Java Debug Wire Protocol                 \           |                 /    |--------------|                /     |  front-end   | debugger -----(      |--------------|  <---- JDI - Java Debug Interface                \     |      UI      |                 \    |--------------|
圖1. Java 調試器架構

這個架構從下往上讀,大致可以解讀為: 用於調試的程式使用UI,通過Protocol,調用遠端JVM進程。

其實質還是JVM,因此,只要確保本地Java 原始碼與目標應用程式一致,本地的Java源碼就可以用socket串連到遠端的JVM,進而執行調試。因此在這種Socket Attach模式(下文介紹)下,本地只需要有源碼,Java應用程式根本不用啟動。

兩種方式進行遠端偵錯圖2描述了遠端偵錯的兩種方式 - 上面的表示Eclipse配置為Socket Listen方式,下面的是Socket Attach方式


圖2. 遠端偵錯的兩種方式

使用Eclipse遠端偵錯Java
Eclipse配置: 菜單(Eclipse): Run-->Debug Configurations 開啟調試配置面板,配置

注意,如果 Java 原始碼與目標應用程式不匹配,調試特性將不能正常工作。

選擇 Allow termination of remote VM 選項 可以在應用程式調試期間終止串連,如:

這樣遠端偵錯串連上之後,就可以像在本地調試Java程式一樣來調試遠端的Java應用程式。

結束語

將以上Socket Attach遠程debug 方法多用於實際項目中,使用過程中多思考一下其中的原理,這樣很多次實踐之後便會對此功能有自己的理解了 :)

使用Eclipse遠端偵錯及原理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.