【引用請註明出處:http://blog.csdn.net/bhq2010/article/details/12200533】
pg核心源碼解析課上用的vs調試pg源碼。VS用起來確實方便,但是配置調試環境著實有點麻煩。首先得裝個windows系統,最好是xp,win7稍微麻煩點;最好使用vs05,08和10也可以,但是比05還麻煩;此外還得裝個perl,最好再裝上cygwin以及其他一大堆linux上原生的東西。然後才能產生vs的工程,產生工程保不準會遇上一些參數配置問題。關鍵是pg很多都是跑在linux上的啊,在windows上有些與系統調用有關的代碼執行和linux上是不一樣,比如建立進程。如果不關心這些系統調用的東西,得益於pg源碼很好的平台相容性,我們也是可以在windows上研究和修改pg源碼的。可是如果我們修改了pg的源碼,要驗證在伺服器上的效果,還得打個包傳到伺服器上,重新編譯、運行。啟動並執行時候還沒法線上調試,只能打日誌。
鑒於以上的問題,最終還是放棄了雞肋一般的vs。可如果在linux上用gdb調試,也實在有點hold不住。於是就用eclipse吧。
參考:http://wiki.postgresql.org/wiki/Working_with_Eclipse [1]
我的系統內容:
centos6.4_x64
gcc.4.4.7
eclipse-c/c++ kepler
postgresql 9.3
下面是我的配置過程:
1. 安裝必要的軟體
# yum install git readline* zlib* bison flex java-1.7.0*
上述這些軟體在某些linux系統中可能已經安裝了。
2. 下載pg源碼
源碼可以用git從pg的repository裡下載:
[bhq@localhost ~]$ mkdir project[bhq@localhost ~]$ cd project[bhq@localhost ~]$ git clone git://git.postgresql.org/git/postgresql.git
下載完成後,在project目錄下會有一個postgresql目錄,裡面就是pg的源碼。[1]中的pg版本比較老,下載後是postgres目錄,並將其重新命名為pgsql。
也可以直接下載:http://www.postgresql.org/ftp/source/ 之後解壓到project目錄下。
3. configure源碼
在終端中:
[bhq@localhost ~]$ cd postgresql[bhq@localhost ~]$ ./configure --prefix=$HOME/project --enable-depend --enable-cassert --enable-debug
其中的$HOME/project 是指剛才下載源碼時建立的那個project目錄。這個目錄會被用來存放pg編譯之後產生的檔案和目錄。沒有報error就configure成功了。
4. 配置eclipse
從http://www.eclipse.org/downloads/ 下載Eclipse IDE for C/C++ Developers。
開啟eclipse之後,在package explorer中importpostgresql工程。操作過程和[1]中Import一節一樣。只是import完成之後,我的eclipse沒有自動開始make。於是手動make:
在eclipse的package explorere視圖中右擊postgresql的工程-> make targets-> create 。填入install-> OK。然後在package explorere視圖中右擊postgresql工程-> make targets -> build,選擇剛才建立的install,OK。最後在console中可以看到“postgreSQL installation complete”就表示make instal成功了。以後每次修改源碼之後都要重新make。
5. initdb在終端中:
[bhq@localhost ~] $ mkdir ~/pgdata[bhq@localhost ~] $ cd project[bhq@localhost ~] $ ./bin/initdb -D ~/pgdata
-D後的目錄用於存放pg的設定檔和資料庫檔案,這個目錄的所有者必須是啟動pg和eclipse的使用者。(由於ntfs檔案系統不支援使用者權限,所以不要把這個目錄放在ntfs的分區上,用win linux雙系統的人可能會遇到這個問題)
6. 運行和調試pg參考[1]中run configuration in eclipse、Add include files、debugging postgresql from eclipse、Debugging with child processes這四節。注意不要先運行起來再調試,不然連接埠就被佔了。
最後小結一下:pg的文檔實在寫得太好了。