天天看點

VS2010調試PostgreSQL9.4.0(網絡資源+個人經驗)(轉)VS2010調試PostgreSQL9.4.0(網絡資源+個人經驗)

VS2010調試PostgreSQL9.4.0(網絡資源+個人經驗)

2015年03月19日 10:27:27 younic1989 閱讀數:360更多

個人分類: PostgreSQL

一、環境:

 1. 作業系統:win7 64bit  

 2. 內建環境:Visual Studio Team System 2010 SP1

 3. PG源代碼:PostgreSQL 9.4.0

 4. 所需工具:Flex、Bison、ActivePerl 5.16  http://www.activestate.com/activeperl/downloads)

二、安裝步驟:(..代表源碼解壓後的路徑)  

 1. 用VS的CMD工具,在..postgresql-9.2.2src oolsmsvc路徑下執行 build DEBUG。 

 2. 注釋掉..srcackendmainmain.c的“check_root(progname);”這一行。  

 3. 建立資料庫目錄(以在..postgresql-9.2.2裡建立db目錄為例),用cmd在

    ..postgresql-9.2.2src oolsmsvc路徑下執行install ..postgresql-9.4.0db。 

 4. cmd裡在..postgresql-9.2.2dbin路徑下執行initdb dbtest 。

 5. 打開..postgresql-9.2.2pgsql.sln,對postgres工程增加指令參數“-D dbindbtest”, 并且修改           pg_config_paths.h如下:

#define PGBINDIR "/bin"

#define PGSHAREDIR "E:/iWork/DB/PGdebug/postgresql-9.4.0/db/share"

#define SYSCONFDIR "/etc"

#define INCLUDEDIR "/include"

#define PKGINCLUDEDIR "/include"

#define INCLUDEDIRSERVER "/include/server"

#define LIBDIR "E:/iWork/DB/PGdebug/postgresql-9.4.0/db/lib"

#define PKGLIBDIR "E:/iWork/DB/PGdebug/postgresql-9.4.0/db/lib"

#define LOCALEDIR "/share/locale"

#define DOCDIR "/doc"

#define HTMLDIR "/doc"

#define MANDIR "/man"

 6. F5調試。在..postgresql-9.2.2dbin路徑下執行psql –d postgres連接配接資料庫,執行SQL指令

select pg_backend_pid(); 将傳回的程序号對應的程序附加到調試程式中(必需在建立連接配接之後),設定所需的斷點。在exec_simple_query()函數中設定斷點,執行SQL語句來調試。

CREATE TABLE distributors (

    did     integer CHECK (did > 100),

    name    varchar(40)

);

INSERT INTO distributors VALUES(111,'HYL');

三、編譯問題:

 1、..postgresql-9.2.2src oolsmsvc>build DEBUG

Unable to determine Visual Studio version: The nmake version could not be determined. at src/tools/msvc/Mkvcbuild.pm line 63.

解決:

修改src oolsmsvcMkvcbuild.pm 檔案第54行:

my $vsVersion = DetermineVisualStudioVersion();

修改後變為:

my $vsVersion;

修改src oolsmsvc VSObjectFactory.pm檔案第26行,即增加如下指令(本機使用VS2010):

return new VS2010Solution(@_);

修改後變為:

my $visualStudioVersion = shift;

return new VS2010Solution(@_);

2、我按網上教程修改config_default.pl後出現無效的perl函數連接配接問,是以最好不要修改。

3、建立庫時,報錯:loading system objects' descriptions ... FATAL:  invalid byte sequence for encoding "UTF8": 0xb9 

解決:之前的路徑中存在中文,改成全英文的路徑後問題消失,或者initdb --locale=C dbtest。

4、按F5調試,直接退出。

解決:可能安裝了pgAdmin用戶端,那麼右擊對應伺服器關閉服務即可。

5、執行psql –d postgres無法到連接配接資料庫

解決:(1)可能安裝了pgAdmin用戶端,那麼右擊對應伺服器關閉服務即可。

         (2)沒有啟動服務程序。先F5調試,然後執行psql –d postgres連接配接資料庫。