VS2013编译调试postgresql10.3

由于之前编译过,想着再来一次应该很容易没想到。。。。

好啦 ,为了下次不犯错,记录一下吧

首先要装vc2013和MinGW

然后确认电脑已经安装好perl、diff、flex、bison,可以在目录C:\MinGW\msys\1.0\bin里面确认是否有相关执行文件,并把这个目录加到path里。

再将C:\Program Files (x86)\MSBuild\12.0\Bin加入到path(这块我迷惑,电脑里有好多版本的MSBuild,在C:\Windows\Microsoft.NET目录里边的其他版本试了几个不行还是报错,最后选了C:\Program Files (x86)\MSBuild\12.0\Bin)

\src\tools\msvc\Mkvcbuild.pm将“my $vsVersion = DetermineVisualStudioVersion();”修改为“my $vsVersion = ‘12.00‘;”,如下图所示:

                       

用vs打开文件“src\fe_utils\print.c”,执行如下操作:

技术分享

 

 

然后保存替换原来的文件。此处解决的问题:该文件中的换行符使用的是各个操作系统通用的换行符,在windows下编译会出现警告。报错信息为“warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss

下面编译postgresql源码:(一定要通过vc的

命令行)

然后执行“cd src\tools\msvc”切换到pg源码路径,执行命令“perl build.pl DEBUG”此处为方便调试使用DEBUG模式,编译时间会比在linux下要长,编译完成后,如下:

编译完成后,可以执行“perl vcregress.pl check”跑一下回归测试,结果如下:

确认无误后,执行“perl install.pl D:\pgdata\pgdb”进行安装,安装结果如下:

然后进入到pg安装目录“cd /d D:\pgdata\pgdb”进行建库操作“initdb.exe -D ../data”,建库完成后,启动pg数据库“pg_ctl.exe -D ../data -l logfile start”,启动完成后即可进入数据库“psql -d postgres”

如果需要使用vs调试pg,先将pg代码使用vs打开,打开方式,找到编译后的文件夹打开文件“pgsql.sln即出现以下提示,因使用vs2013的编译器编译,不对项目进行重定向,选项如下:

确定后,即可使用vs打开pg源码。然后确定当前打开pg的进程ID:

确定后,即可使用vs打开pg源码。然后确定当前打开pg的进程ID:

 

点击附加,即可附加到进程。

尝试调试

此时pg在等待输入,通过堆栈信息可以看出是等待网络消息的状态,最终停止在函数“WaitForMultipleObjects”

使用断调试,例如在pg错误入口函数下断点,

如下

然后执行错误的SQL语句:

数据库中并不存在表aaaa,此时vs状态如下:

以上堆栈信息即为pg执行错误SQL时所使用的函数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值