windows安装调试postgres源码

学习需要,仅此记录,以供参考。 如有缺漏,敬请指正!

​1、安装MSYS2

可参考博客:
https://blog.csdn.net/ymzhu385/article/details/121449628

(1)下载安装程序

官网:https://www.msys2.org/

直接下载:https://download.csdn.net/download/weixin_45867695/87637416

(2)安装

双击.exe文件,根据安装向导完成安装(建议不要安装在C盘)。
【注】:安装完成之后,记得添加环境变量。我添加了msys2的路径和mingw64的bin路径:
在这里插入图片描述

(3)添加国内镜像源

可以参考这篇博客:https://blog.csdn.net/john_bh/article/details/104652224

​【注】:我自己安装之后,直接去升级安装包,总是会报错error: failed retrieving file ‘clang32.db’ from repo.msys2.org : Connection time-out,不难看出,这是repo.msys2.org 网站连接超时导致,问题就出在镜像源。

解决方法:
添加镜像源,同时注释掉镜像文件中的repo.msys2.org 内容。

镜像文件设置位置:
msys2安装目录下的ect/pacman.d文件夹下所有文件名为mirrorlist的文件。
在这里插入图片描述
在这里插入图片描述

(4)更新软件包

打开MSYS2,输入命令:pacman -Su

(5)安装MinGW-w64、gcc等编译工具链

参考博客:https://blog.csdn.net/ScienceRui/article/details/117392080

pacman -S --needed base-devel mingw-w64-x86_64-toolchain

(6)检测gcc和make版本

打开MSYS2 MINGW64命令行界面,输入gcc -vmake -v,如果能出来版本信息,则证明安装成功。

2、下载postgresql源码

官网:https://www.postgresql.org/ftp/source/
在这里插入图片描述
下载好之后,解压。

3、源码编译

① 打开MSYS2 MSYS,进入到postgresql源码的文件夹目录下
在这里插入图片描述
② 输入命令:./configure --prefix=/f/postgresql-src/postgres-build/ --without-Zlib --enable-debug

postgres-build是我新建的一个文件夹,用来存放编译后的文件,prefix后的路径就是编译后产生的文件的存放位置。 后续要调试源码,一定要记得加上--enable-debug参数!

③ 开始编译安装
输入:make install,首次编译时间会比较久。

4、启动数据库

启动MSYS2 MINGW64命令行界面,切换到安装目录的bin文件夹下(例如,我的是f:\postgresql-src\postgres-build\bin)

初始化数据库:./initdb -D ../data

启动数据库并开启日志记录:./pg_ctl start -l logfile -D ../data

连接数据库:./psql -d postgres

获取当前session的后台进程号pid:select pg_backend_pid();
【后台进程号在调试代码时可以用到】
在这里插入图片描述

4、visual studio code 调试源码

(1)安装vscode并下载一些c++/c的插件

参考博客:https://blog.csdn.net/msdcp/article/details/127033151

(2)vscode打开源码文件

打开vscode,【File】-【Open Floder】选择postgresql的源码文件夹(不是编译文件夹)打开。

(3)配置launch.json文件

点击【run and debug】(左侧栏第四个选项),会自动生成launch.json文件的模板,然后修改对应自己程序的launch.json文件内容。

参考博客:https://blog.csdn.net/qq_39690706/article/details/121062011

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "postgres --help",
            "type": "cppdbg",
            "request": "launch",
            "program": "F:/postgresql-src/postgres-build/bin/postgres",
            "args": [
                "--help"
            ],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        },
        {
            "name": "initdb",
            "type": "cppdbg",
            "request": "launch",
            "program": "F:/postgresql-src/postgres-build/bin/initdb",
            "args": [
                "-D",
                "<datadir>"
            ],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        },
        {
            "name": "附加",
            "type": "cppdbg",
            "request": "attach",
            "program": "F:/postgresql-src/postgres-build/bin/postgres",
            "processId": "${command:pickProcess}",
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

【注】:launch.json文件中有launch和attach的区别。launch是vscode启动这个程序进行调试;attach是附加在已经启动的程序上进行调试。

如果要使用attach进行调试的话,需要启动数据库,并查询自己当前的进程号,在vscode中选择“附加”这个调试项,然后选择自己的进程号,就可以根据在数据库中的交互来定位和调试代码啦!

主要修改的地方就是编译后exe文件的位置,替换成自己的目录。
在这里插入图片描述

(4)调试

可以在main.c文件的main函数体的第一行打上断点,然后选择调试项进行调试。
在这里插入图片描述

(5)修改后编译

在源码中添加自己修改的代码之后,Ctrl+S保存修改内容。

打开MSYS2 MINGW64命令行界面,进入源码文件目录,输入make进行编译,如果无报错(有报错就按照报错提示修改代码),则在编译完成之后输入make install,进行编译后安装,完成后就可以看自己修改的代码有没有生效了。

学习需要,仅此记录,以供参考。 如有缺漏,敬请指正!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值