Linux+Eclipse+GDB调试PostgreSQL源码

pg内核源码解析课上用的vs调试pg源码,
 
VS用起来确实方便,但是配置调试环境着实有点麻烦。首先得装个windows系统,最好是xp,win7稍微麻烦点;最好使用vs05,08和10也可以,但是比05还麻烦;此外还得装个perl,最好再装上cygwin以及其他一大堆linux上原生的东西。然后才能生成vs的工程,生成工程保不准会遇上一些参数配置问题。关键是pg很多都是跑在linux上的啊,在windows上有些与系统调用有关的代码执行和linux上是不一样,比如创建进程。如果不关心这些系统调用的东西,得益于pg源码很好的平台兼容性,我们也是可以在windows上研究和修改pg源码的。可是如果我们修改了pg的源码,要验证在服务器上的效果,还得打个包传到服务器上,重新编译、运行。运行的时候还没法在线调试,只能打日志。
 
鉴于以上的问题,最终还是放弃了鸡肋一般的vs。可如果在linux上用gdb调试,也实在有点hold不住。于是就用eclipse吧。
 
参考:http://wiki.postgresql.org/wiki/Working_with_Eclipse [1]

我的系统环境:
 
CentOS6.4_x64
 
gcc.4.4.7
 
eclipse-c/c++ kepler
 
postgresql 9.3
 

下面是我的配置过程:
 
1. 安装必要的软件
 
 
 # yum install git readline* zlib* bison flex java-1.7.0*
上述这些软件在某些linux系统中可能已经安装了。

2. 下载pg源码
 
源码可以用git从pg的repository里下载:

[bhq@localhost ~]$ mkdir project
[bhq@localhost ~]$ cd project
[bhq@localhost ~]$ git clone git://git.postgresql.org/git/postgresql.git
下载完成后,在project目录下会有一个postgresql目录,里面就是pg的源码。[1]中的pg版本比较老,下载后是postgres目录,并将其重命名为pgsql。
 
也可以直接下载:http://www.postgresql.org/ftp/source/ 之后解压到project目录下。
 
3. configure源码
 
在终端中:

[bhq@localhost ~]$ cd postgresql
[bhq@localhost ~]$ ./configure --prefix=$HOME/project --enable-depend --enable-cassert --enable-debug
其中的$HOME/project 是指刚才下载源码时创建的那个project目录。这个目录会被用来存放pg编译之后生成的文件和目录。没有报error就configure成功了。
 
4. 配置eclipse
 
从http://www.eclipse.org/downloads/ 下载Eclipse IDE for C/C++ Developers。
 
打开eclipse之后,在package explorer中importpostgresql工程。操作过程和[1]中Import一节一样。只是import完成之后,我的eclipse没有自动开始make。于是手动make:
 
在eclipse的package explorere视图中右击postgresql的工程-> make targets-> create 。填入install-> OK。然后在package explorere视图中右击postgresql工程-> make targets -> build,选择刚才新建的install,OK。最后在console中可以看到“postgreSQL installation complete”就表示make instal成功了。以后每次修改源码之后都要重新make。
 
5. initdb
 
在终端中:
 
[bhq@localhost ~] $ mkdir ~/pgdata
[bhq@localhost ~] $ cd project
[bhq@localhost ~] $ ./bin/initdb -D ~/pgdata -D后的目录用于存放pg的配置文件和数据库文件,这个目录的所有者必须是启动pg和eclipse的用户。(由于ntfs文件系统不支持用户权限,所以不要把这个目录放在ntfs的分区上,用win linux双系统的人可能会遇到这个问题)

6. 运行和调试pg
 
参考[1]中run configuration in eclipse、Add include files、debugging postgresql from eclipse、Debugging with child processes

这四节。注意不要先运行起来再调试,不然端口就被占了。

最后小结一下:

pg的文档实在写得太好了。

PostgreSQL 的详细介绍:请点这里
PostgreSQL 的下载地址:请点这里

推荐阅读

相关推荐