PostgreSQL的Eclipse开发环境搭建
更新日期:
由于PostgreSQL的代码托管是使用GIT做源码管理工具的,需要先安装git。
所有的PostgreSQL项目的代码可以在这里找到。将代码clone到本地
然后使用git checkout
切换到9.3.4版本。并将该版本的代码copy一份当做working copy
接下来build整个项目,先做configure
其实可以通过./configure --help
来看所有参数,部分参数解释如下
--enable-debug
是在make的过程中将编译信息带入到程序中,以便debug;--enable-cassert
是在编译的过程中保留所有的assert校验,这个在debug的过程中也非常重要。
然后用make编译,发现编译不过,先提示需要安装bison,安装后编译,提示还要安装flex,于是安装这两个依赖
注意,安装完依赖之后,需要再次confugure
,才能编译通过,不然还会提示一样的错误。confugure
后再次编译,就会发现可以编译通过,如下图。
开发的IDE采用Eclipse,需要安装Eclipse和Eclipse的C++开发插件CDT,
然后在eclipse中新建一个C++ project。注意,因为很多程序的运行和调试都要在postgres用户下完成,所以应该把eclipse project建立在postgres用户下。切换到postgres用户下,重新上述步骤编译PostgreSQL。
在建立项目的时候,选择"Makefile Project with Existing Code",以已编译过的PostgreSQL代码来建立project,如下图。
eclipse通常会自动build当前project,如果出于速度考虑,可以将自动编译(auto-build)选项关掉。
如果要debug PostgreSQL的某个程序的话,需要先make install,由于我们编译的时候使用了--prefix=$HOME/project
参数,所以会安装在$HOME/project这个目录下。例如,如果要debug initdb,需要先在eclise中建立调试的Application,并加上-D
参数指定数据库存储文件的目录,如下图。
如果要debug真正执行的程序,多数情况下,PostgreSQL的debug都是这种情况,我们可以用"C/C++ Attach to Application",将debug的程序指定为真正运行的某个postgres进程,由于每个psql连接都会启动一个新的postgres进程,通常需要调试pid最大的那个,也就是最后连接上的那个psql,如下图。
然后就可以开始debug了,单步调试等等,在psql中执行的sql会暂停在那里直到debug完成。
如果要进行PostgreSQL的单元测试,在代码的src\test目录下,有所有的测试案例。运行前需要先make。examples目录下有单元测试的样例,regress目录下是基本的单元测试案例,该目录下的pg_regress程序是单元测试的主程序,可以用pg_regress --help
来查看所有参数。
regress目录下,单元测试的测试项目记录在schedule文件中,例如,serial_schedule就是串行执行每个测试案例。另外,input目录下,是输入文件,包括一些create table语句;data目录下,存放的是数据;sql目录下,是测试用到的sql;results目录下,存放的是测试结果。regressplans.sh是执行测试用的脚本,执行脚本即可开始单元测试。
为了方便后续使用,可以加入一些PostgreSQL的环境变量,如下,