http://blog.csdn.net/adrastos/article/details/9093739

 

1.

下载PostgreSQL的源代码。解压。

2. 

在Windows平台下编译需要跳过一个权限的检测,否则在编译的时候可能会出现错误。

在\src\backend\main\main.c文件中将  check_root(progname);  注释掉。

3.

在\src\tools\msvc\Mkvcbuild.pm文件中将  my $vsVersion = DetermineVisualStudioVersion();  改为 my $vsVersion =  '12.00';  否则build时会报错不能确定版本。

4.

打开Visual Studio自带的“开发人员命令提示”。(路径:C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts)

切换到源代码目录的\src\tools\msvc。输入命令build(若要编译debug版,则输入build debug),将会自动编译,编译需要一定的时间,稍微等一下。编译结果是0 Error(s)即可。

编译后会在PostgreSQL源代码目录下生成大量文件,找到pgsql.sln文件,双击即可运行Visual Studio并加载该解决方案。

如果用普通的cmd进行编译,会报错“cl command not found at src/tools/msvc/Solution.pm line 80.”。

5. 安装

用Win+R打开cmd窗口,切换到\src\tools\msvc文件夹,执行命令“install 目标目录”,“目标目录”是数据库将要安装的地址,用户自行选定。

例:D:\postgresql-9.6.0\src\tools\msvc>install E:\pg_install

windows安装postgres源代码

运行该命令后会提示Installation complete。这时已用编译好的PostgreSQL安装成功,在目标目录中将会出现如下目录:

windows安装postgres源代码

6. 初始化

切换到目标目录的bin文件夹下,执行命令“initdb 数据库目录”。

例:

windows安装postgres源代码

初始化后如下图所示:

windows安装postgres源代码

7. 启动服务器

“E:\pg_install\bin>postgres -D E:\pg_data”

“E:\pg_install\bin>pg_ctl -D E:\pg_data -l logfile start”

8.

为了能够调试安装好PostgreSQL,需要在VS中配置一下,右键postgres工程,点击属性,如下图所示:

windows安装postgres源代码

配置属性 -> 调试:

其中,命令(Command):要绑定PostgreSQL的postgres.exe。命令参数(Command Arguments):-D 数据库目录(注意D要大写,否则有时候可能会报错)。工作目录(Working Directory):数据库目录。

windows安装postgres源代码

9. 创建数据库

切换到数据库目录的bin文件夹下,并执行命令“E:\pg_install\bin>createdb mydb”。

这时打开VS,找到菜单栏中“工具 -> 附加到进程”选项。看到现在应该是有6个postgres.exe的进程,注意记录一下这六个进程的ID。

执行命令“psql 刚刚创建的数据库名称(mydb)”,则进入刚刚创建的数据库中。

这时再看VS的“附加到进程”中应该有7个postgres.exe的进程和一个psql.exe的进程。

然后attach之前没有出现过的postgres.exe进程(通常为第一个)。

10. 添加断点

在postgres工程的postgres.c文件中搜索“simple”,找到一个switch语句。因为postgres.c是psql命令的入口地方,所以在这里加断点之后,在客户端执行命令操作的时候就会被VS捕捉到,就可以追代码了。

例:在psql中输入“\d”。执行后会调到VS中设断点的位置。

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-13
  • 2021-09-20
  • 2021-05-13
  • 2021-12-18
  • 2022-12-23
猜你喜欢
  • 2021-11-24
  • 2021-12-15
  • 2022-02-25
  • 2021-06-30
  • 2021-10-31
  • 2021-08-24
  • 2021-04-08
相关资源
相似解决方案