VS编译以及调试 PostgreSQL 源码工程
2011-11-21 09:53
246 查看
本文转自: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的源码啦.
由于工作原因,需要调试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的源码啦.
相关文章推荐
- 反编译利器Apktool和Dex2jar导入源码以及编译调试
- 关于如何在Android源码目录中建立自己的C工程,并用mm命令单独进行该C工程模块的编译,以及Android.mk的使用介绍(1)
- 在eclipse中调试launcher模块以及已编译launcher源码两份
- VS 使用自带的.NET Reflector单步调试编译好的程序集(反编译),以及相关其他反编译程序介绍
- VS2015——命令行下编译、静态库动态库制作以及断点调试
- 让你的vs工程单步调试进入opencv源码
- Windows 以及 Xcode下编译调试 libcurl 源码
- [置顶] Linux下编译OpenJDK源码以及在Eclipse中调试Hotspot虚拟机
- win10 使用cmake编译opencv源码生成VS工程(二)
- QGroundControl_V2.6源码获取以及工程编译
- perl源码 vs编译 用于源码调试
- OpenCV3.0 + VS2013配置三:编译和调试OpenCV源码
- CentOS上编译OpenJDK8源码 以及 在eclipse上调试HotSpot虚拟机源码
- libevent学习之四:VS2012编译libevent-2.1.8-stable源码 可调试
- vs工程单步调试进入opencv源码
- CentOS编译postgresql源码,以及安装pg依赖包
- 使用“Cocos引擎”创建的cpp工程如何在VS中调试Cocos2d-x源码
- 关于如何在Android源码目录中建立自己的C工程,并用mm命令单独进行该C工程模块的编译,以及Android.mk的使用介绍(2)
- Cmake编译OpenCV和如何在VS工程中配置来使用编译后的OpenCV进行跟踪调试问题