系统环境:ubuntu18.10
eclipse环境:Version: 2019-06 (4.12.0)
开发环境搭建教程: https://blog.csdn.net/zxwsbg/article/details/87170767
依据《 PostgreSQL数据库内核分析》一书以及postgres官网文档配置。
官网文档链接 : https://wiki.postgresql.org/wiki/Working_with_Eclipse (强烈推荐)
PostgreSQL源码下载地址: https://www.postgresql.org/ftp/source/v8.4.1/
必备组件
首先安装插件。
sudo apt-get install libreadline-dev
sudo apt-get install zlib1g-dev
sudo apt-get install flex bison
然后在PostgreSQL源代码目录下输入。与书上不同,由于gcc优化,按照原来的编译会发生错误,所以关闭编译优化。如果这一步是按照书上做的,那么后面需要make clean
后重新生成了。
./configure --prefix=$HOME/project --enable-depend --enable-cassert --enable-debug --enable-debug CFLAGS=-O0
导入代码
打开eclipse,File->import
,然后点击如下图所示。
点next
,下一步画圈圈的配置需要和我完全一样。
然后点击finish
,编译了一会后,最终界面如下图所示。
开发与调试
新建 “Make Target”
右击pgsql
项目名,然后点击Build Targets->Create..
(这里和书上不一样,因为eclipse版本不同)。按照如下图配置后点击OK。
此时项目列表左侧出现Build Target选项,目录下有个install,双击后就开始构建了,出现如下图所示表示构建成功。
尝试运行数据库
打开源代码所在目录。如下图所示表示成功构建。
cd project
export PATH=$HOME/project/bin:$PATH
export PGDATA=DemoDir
initdb
调试数据库代码
注意:运行成功后需要关闭原Postmaster进程!!!
在这步出现了若干问题,用了一系列措施,不知道哪个有用哪个没用,干脆全写了。
vim /etc/profile
# 添加如下几行
export PATH=$HOME/project/bin:$PATH
export PGDATA=$HOME/postgresql-9.5.2/DemoDir
# 退出后
source /etc/profile
cd ~/project/bin
initdb
然后运行数据库时会出现端口已占用,就去进程里面kill掉就行了。
右键pgsql,Debug As -> Local C/C++ Applications->postgres
,出现如下图所示表示成功。
程序在main函数处停下,此时继续点击工具栏的前进按钮让主进程运行完。
服务进程调试
首先打开终端输入psql
,会出现若干问题,这个可以在我另一篇博客里解决。
Eclipse界面 Run->Debug configurations->C\C++ Attach To Application
如果出不来子目录就双击一下C\C++ Attach To Application
。
点Debug,出现进程选择,选与postgres对应的。
参考资料
[1] 《PostgreSQL数据库内核分析》
[2] https://www.jianshu.com/p/f8ec012b4cc6
[3] https://www.cnblogs.com/maxiaohei/p/10321150.html
[4] https://wiki.postgresql.org/wiki/Working_with_Eclipse