Windows调试Postgresql

Windows调试Postgresql

本文参考:http://wenku.baidu.com/link?url=6LnDfgE00pQQyTo6t2H228Fu9jLGwdPTwa2RhwuC3TV-gythEslbQMB_Q9fVHrIFPuF23lYlv1e2d2OBz_AbAVsn0vQeQFiyaSwuu5Hr2-y&qq-pf-to=pcqq.c2c

PostgreSQL的代码是在Linux环境下开发的,想要移植到Windows下调试还是需要费一番精力的,不过好在最新的版本9.3.4相比以前还是方便了很多。以下是我个人的一次成功移植的记录。

一、环境:

  1. 操作系统:win8 64bit
  2. 集成环境:Visual Studio 2013 SP4
  3. PostgreSQL:9.3.4
  4. 所需工具:Git-1.9.2-preview20140411(ActivePerl)。安装该工具后,不需要再安装perl、flex、bison等。

二、安装步骤:

需要先安装VS和GIT(或者ActivePerl),后再进行如下操作。(我的调试环境、数据库均准备安装在D:\db中,以下以该目录进行说明,源代码解压到D:\db\postgresql-9.3.4目录中)

  1. 用VS的CMD工具(D:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts中的“VS2013 x64 本机工具命令提示”),在D:\db\postgresql-9.3.4\src\tools\msvc路径下执行:
    build DEBUG

  2. 注释掉D:\db\postgresql-9.3.4\src\backend\main\main.c的“check_root(progname);”这一行。
    修改D:\db\postgresql-9.3.4\src\tools\msvc\Mkvcbuild.pm中的
    my $vsVersion = DetermineVisualStudioVersion();
    为:
    my $vsVersion = '12.00';

  3. 创建数据库目录(以在新建db目录为例),用cmd在D:\db\postgresql-9.3.4\src\tools\msvc路径下执行:
    install D:\db\db

  4. cmd里在D:\db\postgresql-9.3.4\db\bin
    路径下执行:
    initdb dbtest

  5. 用VS打开D:\db\postgresql-9.3.4\pgsql.sln,对postgres
    工程增加命令参数:
    -D D:\db\db\bin\dbtest
    如下图所示:
    图1

    并且修改src\port\pg_config_paths.h如下:
    #define PGBINDIR "D:\\db\\db\\bin"
    #define PGSHAREDIR "D:\\db\\db\\share"
    #define SYSCONFDIR "D:\\db\\db\\etc"
    #define INCLUDEDIR "D:\\db\\db\\include"
    #define PKGINCLUDEDIR "D:\\db\\db\\include"
    #define INCLUDEDIRSERVER "D:\\db\\db\\include\\server"
    #define LIBDIR "D:\\db\\db\\lib"
    #define PKGLIBDIR "D:\\db\\db\\lib"
    #define LOCALEDIR "D:\\db\\db\\share\\locale"
    #define DOCDIR "D:\\db\\db\\doc"
    #define HTMLDIR "D:\\db\\db\\doc"
    #define MANDIR "D:\\db\\db\\man"

  6. 调试。在D:\db\postgresql-9.3.4\db\bin路径下执行:
    "pg_ctl" -D "dbtest" -l logfile start //启动数据库
    psql –d postgres -p 5433 //连接数据库,5433为端口。

然后VS的调试->添加到进程菜单中,把所有或者你运行的那个postgres.exe进程添加进来(必需在建立连接之后),设置所需的断点。执行语句来调试,如图:
图2

三、问题及解决

  1. 在2.2步时,报错:
    原因分析是脚本执行时不识别VS的具体版本号。
    Unable to determine Visual Studio version: The nmake version could not be determined. at src/tools/msvc/Mkvcbuild.pm line 63.
    解决:将Mkvcbuild.pm等文件中的DetermineVisualStudioVersion换成具体的版本号。

  2. 创建库时,报错:loading system objects’ descriptions … FATAL: invalid byte sequence for encoding “UTF8”: 0xb9
    解决:之前的路径中存在中文,改成全英文的路径后问题消失

四、其它

相对于以前想要移植PG到windows上要安装一大堆相关库和软件,如今简直是傻瓜安装。基本上就这几个关键点:VS工程生成,PG相关数据库路径设置,VS进程调试。遇到问题多分析或上网找找,能弄好应该问题不大。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值