MySQL源碼構建和在Gdb中調試的配置過程

 

通過源碼學習C++是我一直以來的習慣,上個月把SGI’s STL源碼搗鼓了一下,畢竟是在Win下,配置過程還是很順利的,這個可以參考侯傑的STL源碼,一有空我就深入STL,那個纔是基礎啊。

但是光有基礎是不夠的,於是MySQL成了我第三個開源項目的被解剖者,第一個是Myseelite,因爲當時要做一個P2P流媒體播放器,是基於那個項目的並且移植到Win下,當然這個是實踐性最強的一個項目了。MySQL,STL,Linux這些源碼也只能抽空小改改,沒有時間完全深入,這個還是很鬱悶的,因爲白天要上班,項目還是比較緊的那種。

 

環境:rhel 5 64-bit 一個快被我用爛了的Linux,但是一直沒重裝過,因爲一直保留有快照,萬一不行了還原下,呵呵。

網上有用BitKeeper下MySQL源碼,估計是類似是CVS SVN的版本控制,下了沒用還只能找到2.0版本的,訪問了他提供的地址,連源碼都找不到,是不是被撤了也不知道,反正網上能下到源碼,幹嗎還用版本控制。

http://download.mysql.cn/ 這個網站能下到源碼,有4.1.18還有5.0.18的,我下了前者。

前期準備,gcc,autoconf,automake,m4,make等各種工具,我的rhel 5都裝好了。

 

$ tar zxvf mysql-4.1.18.tar.gz

$ cd mysql-4.1.18

$ cp BUILD/compile-pentium-debug BUILD/compile-generic-debug

$ vim BUILD/compile-generic-debug

將文件設置如下:

#! /bin/sh

 

path=`dirname $0`

. "$path/SETUP.sh"

 

extra_flags="-g  $debug_cflags"

c_warnings="$c_warnings $debug_extra_warnings"

cxx_warnings="$cxx_warnings $debug_extra_warnings"

extra_configs=""

 

. "$path/FINISH.sh"

 

 

$ BUILD/compile- generic-debug   生成make文件

$make test

 

如下這步可選,如果你要將MySQL安裝到系統目錄,那麼可以執行

$make install

當然還可以用 $./configure 配置選項

 

接下來就是最重要的調試了

$cd到mysql-test目錄下

$cd t

在t目錄下你會發現有很多.test文件,文件內容全是sql語句,是預存在MySQL下提供給我們測試的,當然也可以自己新建一個.test文件,裏面寫上自己要測試的代碼。

 

測試:

$./mysql-test-run –gdb 測試文件名稱(注意不帶test)

比如測試drop.test文件,那麼命令行便是

$./mysql-test-run –gdb drop

運行後會跳出gdb調試窗口,會跳到mysql_parse()函數中的一個預設斷點中。

 

調試完成後,控制檯會提示測試結果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章