Postgresql-12.5 visual studio-2022 windows 添加pg工程并调试

pg内核学习,记录一下


安装包

(1)perl下载
https://www.perl.org/get.html

(2)diff下载
http://gnuwin32.sourceforge.net/packages/diffutils.htm

(3)添加perl和diff环境变量
在这里插入图片描述

(4)vs2022 community安装
https://visualstudio.microsoft.com/zh-hans/vs/

(5)安装C++桌面开发
在这里插入图片描述
(6)v142组件安装

先切到单个组件
在这里插入图片描述
搜一下v142
因为我下的pg12.5源码是要求用v142编译,到时候根据pg源码需求搜一下相对应的组件安装就好,选对应的生成工具安装

我这里下载MSVCv142-vS 2019 C++ x64/x86生成工具(v14.29-16.11)
在这里插入图片描述

(7)下载pg源码
https://www.postgresql.org/ftp/source/
我安装的是12.5
下载出来是这个安装包,解压一下

注意不能有中文路径
在这里插入图片描述


编译安装

(1)打开VS终端
2017是叫x64本机工具命令提示,2022叫x64 native tools command prompt,开始菜单vs的目录下
在这里插入图片描述
在进行编译前需要安装好perl、diff命令

下面的命令都是在这个终端中执行的

打开prompt,正确确情况是会显示Copyright什么的
在这里插入图片描述

(2)切换到源码目录
cd C:\install\postgresql-12.5\src\tools\msvc

(3)编译
perl build.pl DEBUG

编译完,有两个警告,可以不用管。

(4)回归测试
perl vcregress.pl check

(5)编译安装
perl install.pl C:\install\postgresql-12.5

(6)初始化库
新打开一个cmd窗口

先切换到编译安装的bin目录
cd C:\install\postgresql-12.5\bin

初始化db
initdb.exe -D ..\data

启动服务器
pg_ctl -D ^"^.^.^\data^" -l logfile start

进入psql
psql -d postgres

VS添加Postgresql工程

在postgresql源码目录下有一个pgsql.sln文件双击即可打开。

或者到vs选择打开项目选择pgsql.sln

调试源码

(1) 启动数据库

进入编译安装目录下的/bin目录,

用以下两个命令来启动数据库,如果启动过了,就只用执行psql -d postgres

pg_ctl start  -l logfile -D ../data
psql -d postgres

(2)启动Visual Studio

vs选择打开项目选择pgsql.sln

(3) 添加附加进程
然后点击功能栏中的【调试】->【附加进程】,选择进程列表中的第一个postgres.exe。这里一定要选第一个,附加到后面的几个进程是不能正常调试的。

在这里插入图片描述
如果要确认这个进程是否是自己的PostgreSQL的主进程,可以输入:
select * from pg_backend_pid();
在这里插入图片描述
(4)设置断点

如果不是很清楚应该在哪里设断点,或者无法在自己设置的断点处停下来,可以打开src/backend/tcop/postgres.c文件

可以在解决方案资源管理器搜索postgres.c

右侧解决方案资源管理器可以直接按"ctrl + alt + l" 快捷键进行显示
在这里插入图片描述

然后ctrl+F5,搜索switch (firstchar)

在这里插入图片描述

在这里设个断点
在这里插入图片描述
(5)调试

在终端输入sql语句
select * from pg_backend_pid();

vs就会在断点处停下,调试有三个按键,分别是:逐语句、逐过程和跳出。
在这里插入图片描述
逐语句(F11)是运行实际执行的下一条C语句,如果此处是函数就会进入函数内部;逐过程(F10)是运行该行,如果是函数,会直接执行完成到下一行停下;跳出(shift+F11)是运行完当前的函数跳到外层调用该函数结束的地方
在这里插入图片描述


之后可以在调试之中逐步去学习PostgreSQL的源代码了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值