在eclipse中配置MySQL原始碼環境(r12筆記第14天)

jeanron100發表於2017-03-25

今天費了些周折,總算搭建好了MySQL原始碼的除錯環境,主要的目的就是想在看程式碼的時候有一些頭緒,讓這些開發技巧派上用場。不至於盲人摸象一般的拿著命令肉眼掃視,當然對於程式碼至於能不能啃下來,那是另外一回事了。

我來說說我的情況,Java開發還有一點基礎,所以以前的eclipse還算用得比較熟悉。大家知道InnoDB的原始碼是c,MySQL Server的是c++,這樣一套環境想除錯好,如果沒有這方面的平臺開發經驗其實還是有一點難度的。最後我還是決定使用eclipse來做,基於Windows平臺。

裡面趟了好幾個坑,讓我苦不堪言。

先要做幾件事情

1)下載MySQL原始碼

2)下載開發IDE eclipse

3) 編譯環境除錯

4) 配置程式碼除錯方式

下載MySQL原始碼

MySQL原始碼的下載,直接到www.mysql.com上面,選擇社群版,下載型別是source code,就可以看到下面的選項了。

在eclipse中配置MySQL原始碼環境(r12筆記第14天)

比如說我選擇的是這個5.6.35的版本。最新的是5.7的,再早一些的是5.5版本的,之前的還真不好找了,得通過其他渠道了。

下載IDE eclipse

eclipse是個開發通用平臺的IDE,不過這個說法現在受到了IntelliJ IDEA的挑戰,目前來看挑戰成功,其中有一部分原因和新版本的一些介面的改進有關,不過相對來說eclipse這個工具Java開發者用得多一些,有些面試裡還會問裡面的幾個快捷鍵,一問就能問出來i用得怎麼樣。可能有的朋友就會問,eclipse是Java開發用得多一些,那和MySQL原始碼環境有什麼關係。難道在裡面用Java編輯器看c++程式碼,非也。

因為eclipse還是有c++版的插件的,可以在www.eclipse.org上面下載c++版本專屬的。

坑點1

但是下載之後,啟動eclipse失敗,錯誤是Failed to load the JNI shared library jvm.dll”,這個錯誤的大多數說法是和JDK的位數有關,比如32位,64位的相容性有關,當前的環境是一個JDK6的環境,看來孩不夠,我再下載個JDK7的試試。官網已經直接下載不了了,得通過mos下載。

配置好環境之後,收到的錯誤變樣了,我感覺被這個錯誤玩弄了。

在eclipse中配置MySQL原始碼環境(r12筆記第14天)

一個IDE升級那麼新版本的JDK幹什麼,然後又這回來下載JDK8。官網下載的還是安裝版的。我就默默的看著下面的這個霸氣的硬廣,直到安裝成功。其實相對來說,我還是喜歡解壓版的。

在eclipse中配置MySQL原始碼環境(r12筆記第14天)

eclipse可以啟動了,我建立了一個專案,我命名為mysql_5_6_35

在eclipse中配置MySQL原始碼環境(r12筆記第14天)

這個時候環境還是基本空白的,先建立好再說。

在eclipse中配置MySQL原始碼環境(r12筆記第14天)

簡單確認之後,就建立好了一個專案,新版本的exlipse就開始生成了工作目錄。啟動的介面還是不錯的。

在eclipse中配置MySQL原始碼環境(r12筆記第14天)

編譯環境除錯

啟動了eclipse,建立了專案,我們可以從指定的目錄下匯入原始碼包裡的程式碼。當然不出所料,開啟程式碼之後,發現後臺開始報出了下面的錯誤。編譯環境就有有問題。

在eclipse中配置MySQL原始碼環境(r12筆記第14天)

這個時候如果能配置好還是很有意思的,可以在windows上來安裝一下gcc,g++的環境,可以參考https://sourceforge.net/projects/mingw/這個網站,下載即可。

在eclipse中配置MySQL原始碼環境(r12筆記第14天)

這個軟體的風格蠻有意思,下載安裝包的時候是下面的安裝進度,需要安裝哪些外掛,也基本是這樣的形式。

在eclipse中配置MySQL原始碼環境(r12筆記第14天)

我們不光要gcc的,還要g++,在安裝好的軟體基礎上需要再下載新的包來安裝。最後會提示安裝成功。

在eclipse中配置MySQL原始碼環境(r12筆記第14天)

在eclipse裡面還是需要做一些基本的配置的。根據紅色的框圖找到對應的選單,修改右下角的路徑,這個路徑就是我們剛剛安裝的軟體所在的目錄。

在eclipse中配置MySQL原始碼環境(r12筆記第14天)

比如我安裝在了D盤,就配置成下面紅框的路徑。

在eclipse中配置MySQL原始碼環境(r12筆記第14天)

這個時候還有一個問題,提示make沒有配置,這個問題可讓我有些摸不著頭腦。gcc都裝了,make檢查了也是安裝成功的,為什麼提示配置裡沒有呢。這裡有一個梗。我們需要把下面的檔案改個名字,其實它就是make

在eclipse中配置MySQL原始碼環境(r12筆記第14天)

配置好環境,編譯就大體沒有問題了。

在eclipse中配置MySQL原始碼環境(r12筆記第14天)

配置程式碼除錯方式

其實上面的環境配置也算是一個輔助,如果我們只是看看程式碼,其實也能接受,不過下面的這個功能用不了,檢視程式碼就會困難重重。比如我滑鼠點選到程式碼裡的某一個方法,根據呼叫關係我能夠很快定位到另一個檔案的呼叫函式,如此一來檢視邏輯就會清楚許多。

但是這個功能在eclipse竟然用不了,熟悉Java開發的同學應該都熟悉這個outline的功能,一個檔案裡面有哪些函式,哪些變數都可以一目瞭然,所以這種情況得改進,發現無法啟用的原因是我開啟的其中一個檔案的程式碼行數超過了5000行。預設eclipse的配置,超過5000行就啟用不了outline了,我們改一下紅框的配置即可。

在eclipse中配置MySQL原始碼環境(r12筆記第14天)

配置好之後,重啟eclipse就沒問題了,可以看到右邊的outline資訊,求會清晰很多,點選程式碼也會有這種定位功能,這下看程式碼就方便多了。比如我們檢視InnoDB的程式碼,到storage/Innobase/handler/ha_innodb.cc這個檔案,這會是我學習innodb的一個關鍵介面檔案。

在eclipse中配置MySQL原始碼環境(r12筆記第14天)

環境配置好了,剩下的事情才是重點的內容。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-2136086/,如需轉載,請註明出處,否則將追究法律責任。

相關文章