VS编译以及调试 PostgreSQL 源码工程

来源:互联网 发布:python培训班 马哥 编辑:程序博客网 时间:2024/06/08 13:34

本文转自:coanor


由于工作原因,需要调试PG的源码。
google之,尚无全策,自捣鼓之,遂成。
(注:以下均为Windows平台,并且suppose你的VS2005已经安装,且设置了VS2005的环境变量:)

下载PG源代码(我下载的是8.4.1版本)、Bison(2.2版本以上或1.85版本)、Flex(单一的.exe文件)、Perl(ActivePerl,需安装)等,自google之。
『1』解压,假设为D:\Postgresql
『2』系统环境变量设置:
    a)在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727下找到MSbuild.exe这个程序,并将C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727设置为系统的path环境变量。
    b)将Flex、Bison、Perl的物理路径设置为系统path环境变量(假设Bison、Flex目录为D:\)
『3』在PG的源码中,注释掉..\postgresql\contrib\fuzzystrmatch\dmetaphone.c中的几个case,具体位置为464行一个,1040行有一个,在编辑器上显示为『case '?』,一看便知是少了半边『'』,但在这里,显示『?』是因为编辑器遇到了一个拉丁字符,无法显示才冒出一个问号,我们简单的将这两个case分支注释掉即可——毕竟我们只需要调试器代码,并不需要用VS编译一个出来自己用,实际上,PG的windows版本并不是VS家族编译出来的。
『4』在D:\postgresql\src\backend\main中的main.c中,注释掉第157行,即检查root的那行,便于调试使用。
『5』进入D:\postgresql\src\tools\msvc目录,打开config.pl文件,注释掉除perl以外的其它行,并将perl的路径设置为你当前perl的安装目录。
『6』进入命令行,CD到D:\postgresql\src\tools\msvc目录下,运行『perl build.pl DEBUG』,等着吧,在我机器上编译了00:09:01.96,若在当中遇到警告,别理它。
『7』在D:\postgresql下新建一个bin目录,然后在D:\postgresql\src\tools\msvc目录下运行『perl install.pl ..\postgresql\bin』,这一步的目的是将各地编译的成果拷贝到新建的那个bin目录下。
『8』在D:\postgresql\bin\bin目录下,运行『initdb.exe --no-locale u_db_name』,u_db_name为你自己定义的数据库名,命令执行完后,在D:\postgresql\bin\bin会生成一个u_db_name的文件夹。
『9』打开postgresql目录下的pgsql.sln文件,在主工程(postgres)的设置中:
    将Configuration Properties/debugging/Command的值设置为D:\postgresql\bin\bin\postgres.exe
    将Configuration Properties/debugging/Command Directory设置为--single -D u_db_name postgres
    将Configuration Properties/debugging/Working directory设置为D:\postgresql\bin\bin
    保存设置。
『10』按下F10吧,到了这一步,你就可以加入更多新的调试选项来猥亵PG的源码啦.