内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

openjdk7之編譯和debug-創(chuàng)新互聯(lián)

編譯

  1. 下載源代碼
    openjdk的源碼可以通過(guò)hg方式下載?! ?br />也可以從此處下載:openjdk源碼

    遼中ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書未來(lái)市場(chǎng)廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
  2. 安裝引導(dǎo)JDK
    因?yàn)镴DK中有很多代碼是Java自身實(shí)現(xiàn)的,所以還需要一個(gè)已經(jīng)安裝在本機(jī)上可用的JDK,叫做“Bootstrap JDK”。我所選用的Bootstarp JDK是JDK1.6.0_45?! ?/p>

    java version "1.6.0_45"Java(TM) SE Runtime Environment (build 1.6.0_45-b06)Java HotSpot(TM) Server VM (build 20.45-b01, mixed mode)

    JDK1.6.0_45下載地址:jdk1.6.0_45.tar.gz

  3. 安裝編譯前的依賴環(huán)境
    安裝gcc、g++、make等  
    sudo apt-get install build-essential  
    安裝ant 1.7以上   
    sudo apt-get install ant  
    安裝XRender   
    sudo apt-get install libxrender-dev   
    sudo apt-get install xorg-dev   
    安裝alsa   
    sudo apt-get install libasound2-dev  
    Cups   
    sudo apt-get install libcups2-dev   
    安裝零碎的工具包   
    sudo apt-get install gawk zip libxtst-dev libxi-dev libxt-dev

  4. 配置編譯腳本  
    將你的openjdk解壓后,并進(jìn)入該文件夾。比如我的是在/home/ddy/openjdk-compile/openjdk-7u40-fcs-b43-26/openjdk
    下。新建一個(gè)build.sh,并添加如下內(nèi)容:  

    export LANG=C#將一下兩項(xiàng)設(shè)置為你的BootstrapJDK安裝目錄export ALT_BOOTDIR=/home/ddy/jdk1.6.0_45export ALT_JDK_IMPORT_PATH=/home/ddy/jdk1.6.0_45#允許自動(dòng)下載依賴包export ALLOW_DOWNLOADS=true#使用預(yù)編譯頭文件,以提升便以速度export USE_PRECOMPILED_HEADER=true#要編譯的內(nèi)容,我只選擇了LANGTOOLS、HOTSPOT以及JDKexport BUILD_LANGTOOLS=trueexport BUILD_JAXP=falseexport BUILD_JAXWS=falseexport BUILD_CORBA=falseexport BUILD_HOSTPOT=trueexport BUILD_JDK=true#要編譯的版本export SKIP_DEBUG_BUILD=falseexport SKIP_FASTDEBUG_BUILD=trueexport DEBUG_NAME=debug#避免javaws和瀏覽器Java插件等的buildBUILD_DEPLOY=false#不build安裝包BUILD_INSTALL=false#包含全部的調(diào)試信息export  ENABLE_FULL_DEBUG_SYMBOLS=1#調(diào)試信息是否壓縮,如果配置為1,libjvm.debuginfo會(huì)被壓縮成libjvm.diz,將不能被debug。export  ZIP_DEBUGINFO_FILES=0#用于編譯線程數(shù)export  HOTSPOT_BUILD_JOBS=3#設(shè)置存放編譯結(jié)果的目錄#export ALT_OUTPUTDIR=/home/ddy/openjdk/7/buildunset CLASSPATHunset JAVA_HOMEmake sanityDEBUG_BINARIES=true make 2>&1

    5.開始編譯
    在openjdk目錄下,運(yùn)行build.sh

    chmod +x build.sh./build.sh

    最后編譯耗時(shí)將近2分鐘。編譯完成輸出如下信息:
    openjdk7之編譯和debug
    此時(shí)openjdk就編譯完成了,編譯的輸出在/home/ddy/openjdk-compile/openjdk-7u40-fcs-b43-26/openjdk/build/下。
    進(jìn)入/home/ddy/openjdk-compile/openjdk-7u40-fcs-b43-26/openjdk/build/linux-amd64-debug/j2re-p_w_picpath/bin n,執(zhí)行
    ./java -version
    輸出的java版本信息將是帶著你的機(jī)器用戶名,我的輸出是:

    openjdk version "1.7.0-internal-debug"OpenJDK Runtime Environment (build 1.7.0-internal-debug-ddy_2017_06_10_22_30-b00)OpenJDK 64-Bit Server VM (build 24.0-b56-jvmg, mixed mode)

    debug

    編譯完成了之后,就可以對(duì)JDK源碼和HotSpot源碼等進(jìn)行debug了。

    JDK

    首先是JDK源碼,在build目錄下編譯生成的jdk里面的jar包都是可編譯的了,直接把eclipse的JDK或者JRE換成編譯成功的JDK或者JRE即可。

    HotSpot

    注意,如果不能進(jìn)入斷點(diǎn),出現(xiàn)以下類似信息:
    Missing separate debuginfo for/root/openjdk/build/linux-x86_64-normal-server-slowdebug/jdk/lib/amd64/server/libjvm.so
    是因?yàn)樵诰幾g時(shí)因?yàn)榫幾g配置項(xiàng)不正確而沒有生成調(diào)試的符號(hào)信息,或生成后被壓縮為"libjvm.diz"了,所以無(wú)法找到。如果是因?yàn)闆]有編譯時(shí)沒有生成調(diào)試信息,需要修改編譯配置并重新編譯。對(duì)于被壓縮的情況,可以去到"libjvm.so"所在目錄

  • 然后解壓:unzip libjvm.diz

  • 解壓出來(lái):libjvm.debuginfo

如果在編譯時(shí),把配置信息修改如下,則不會(huì)出現(xiàn)不能上述問(wèn)題。

#包含全部的調(diào)試信息export  ENABLE_FULL_DEBUG_SYMBOLS=1#調(diào)試信息是否壓縮,如果配置為1,libjvm.debuginfo會(huì)被壓縮成libjvm.diz,將不能被debug。export  ZIP_DEBUGINFO_FILES=0

使用GDB

參考:CentOS上編譯OpenJDK8源碼 以及 在eclipse上調(diào)試HotSpot虛擬機(jī)源碼

使用eclipse

  1. 生成要運(yùn)行的JAVA類
    首先在/home/ddy/src/java-src目錄下建立要運(yùn)行的FileChannelTest.java,這個(gè)類在寫文件時(shí)調(diào)用了JDK的native方法,其代碼如下:  
    ```java
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.RandomAccessFile;
    import java.nio.ByteBuffer;
    import java.nio.channels.FileChannel;
    public class FileChannelTest {

public static void main(String[] args) throws IOException {
FileChannel channel=new RandomAccessFile("test.txt","rw").getChannel();
ByteBuffer buffer=ByteBuffer.allocate(1000);
channel.write(buffer);
}
}
然后對(duì)其進(jìn)行編譯,運(yùn)行:  bash
ddy@ddy-Aspire-V5-573G ~ $ cd src/java-src/
ddy@ddy-Aspire-V5-573G ~/src/java-src $ pwd
/home/ddy/src/java-src
ddy@ddy-Aspire-V5-573G ~/src/java-src $ /home/ddy/openjdk-compile/openjdk-7u40-fcs-b43-26/openjdk/build/linux-amd64-debug/j2sdk-p_w_picpath/bin/javac FileChannelTest.java
```

  1. 下載eclipse,安裝C/C++插件 
    到官網(wǎng)選擇一個(gè)合適的eclipse下載,因?yàn)楸救酥饕M(jìn)行JAVA開發(fā),所以下載的是j2EE版本,這個(gè)版本沒有C/C++的功能。不過(guò)可以安裝插件使其支持C/C++功能。"help -> Eclipse Maketplace",搜索"c++"找到Eclipse C++ IDE..安裝。安裝后,就可以轉(zhuǎn)到C++開發(fā)視圖界面了。

  2. 導(dǎo)入hotspot工程
    File-> New -> Makefile Project With Existing Code
    在界面中:
    Project Name:openjdk(這個(gè)可以自己選擇)
    Existing Code Location:/root/openjdk
    Toolchain:選Linux GCC,然后按Finish.

  3. 配置源碼調(diào)試

  • init.cpp(/home/ddy/openjdk-compile/openjdk-7u40-fcs-b43-26/openjdk/hotspot/src/share/vm/runtime目錄下) 95行

  • FileDispatchImpl.c(/home/ddy/openjdk-compile/openjdk-7u40-fcs-b43-26/openjdk/jdk/src/solaris/native/sun/nio/ch目錄下) 107行

  1. 右鍵工程 -> Debug As -> Debug Configurations -> 右鍵左邊的C/C++ Application -> New -> 進(jìn)入Main選項(xiàng)卡;
    在選項(xiàng)卡中:
    Project: openjdk(選擇導(dǎo)入的openjdk工程)
    C/C++ Application: /home/ddy/openjdk-compile/openjdk-7u40-fcs-b43-26/openjdk/build/linux-amd64-debug/j2sdk-p_w_picpath/bin/java(編譯生成的openjdk虛擬機(jī)入口)
    Disable auto build:因?yàn)椴辉僭趀clipse里面編譯hotspot源碼,所以這里選上它;

  2. 然后切換到Arguments選項(xiàng)卡, 輸入Java參數(shù), 這里填上 "FileChannelTest"也就是我們要執(zhí)行的JAVA程序。

  3. 然后切換到Environment選項(xiàng)卡, 添加變量
    JAVA_HOME=/home/ddy/openjdk-compile/openjdk-7u40-fcs-b43-26/openjdk/build/linux-amd64-debug/j2sdk-p_w_picpath(編譯生成JDK所在目錄)
    CLASSPATH=.:/home/ddy/src/java-src (FileChannelTest.java文件所在目錄)
    點(diǎn)擊下面的Apply保存;

  4. 斷點(diǎn)Debug
    下面分別在源碼上打兩個(gè)斷點(diǎn):

然后開始debug。首先是第一個(gè)斷點(diǎn):F8進(jìn)行到下一個(gè)斷電點(diǎn):從上圖可以看到,FileChannel.write()最后調(diào)用的是write()操作系統(tǒng)調(diào)用。所以,大家現(xiàn)在可以隨便debug HotSpot的源碼和JDK的native源碼了???!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

分享名稱:openjdk7之編譯和debug-創(chuàng)新互聯(lián)
當(dāng)前路徑:http://www.rwnh.cn/article42/dohgec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、搜索引擎優(yōu)化、響應(yīng)式網(wǎng)站、虛擬主機(jī)、關(guān)鍵詞優(yōu)化、品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
乃东县| 金平| 惠州市| 合江县| 福贡县| 道真| 九江县| 永靖县| 南昌市| 凤冈县| 麻江县| 奈曼旗| 东乌珠穆沁旗| 体育| 武城县| 阿坝县| 米易县| 永善县| 宕昌县| 华亭县| 德州市| 廉江市| 柳河县| 永嘉县| 康平县| 南康市| 海南省| 阜新| 昭觉县| 文成县| 北海市| 平远县| 东台市| 白城市| 宁化县| 迁西县| 景德镇市| 上犹县| 张家川| 兴义市| 敖汉旗|