如何用调试器动态跟踪PostgreSQL?

一.PostgreSQL版本及相关工具的选择

1.调试器选择cgdb

关于cgdb的介绍请参考下面链接:

http://cgdb.github.io/

2.操作系统选择

ubuntu 13.04

3.PostgreSQL选把最新的稳定版9.2.4

 

二.编译及调试环境搭建

1.安装编译及调试时所依赖的工具和库

pg@zfs:~$ sudo apt-get install gcc gdb cgdb make flex bison libreadline6-dev zlib1g-dev

 

2.下载PostgreSQL 9.2.4版本的源码

pg@zfs:~$ wget http://ftp.postgresql.org/pub/source/v9.2.4/postgresql-9.2.4.tar.bz2

 

3.解压源码包

pg@zfs:~$ tar xvf postgresql-9.2.4.tar.bz2

 

4.配置编译选项

pg@zfs:~/postgresql-9.2.4$ ./configure --prefix=/home/pg/db --enable-debug CFLAGS=-g

 

5.编译并安装PostgreSQL

pg@zfs:~/postgresql-9.2.4$ make && make install

 

6.创建并初始化数据库

pg@zfs:~/db$ mkdir data

pg@zfs:~/db$ bin/initdb -D /home/pg/db/data -U postgres -W

注意:上条命令在执行过程中会提示设置superuser的密码

 

 

7.启动PostgreSQL 

                        图1

由上图1可见,数据已经安装成功。

 

到目前为止,所有的前期准备工作结束了,下面开始演示如何用cgdb跟踪PostgreSQL。

 

 三.配置PostgreSQL

1.启用SysLogger功能

在postgresql.conf中,

将logging_collector的值由off改为on

将log_destination = 'stderr'前的注释符'#'去掉

 

2. 能够接受其他机器来的连接

在postgresql.conf中,

将listen_addresses值由"localhost"改为"*"。

 

3.启用client连接的验证

在pg_hba.conf中,

更改前:

# IPv4 local connections:
host all all 127.0.0.1/32 trust

更改后:

# IPv4 local connections:
host all all 0.0.0.0/0  md5

 

四.跟踪PostgreSQL

1.执行pg@zfs:~/db$ cgdb bin/postgres 后,会出现图2的画面

                              图2 

 2.在Postmaster入口处设置断点并运行,如下图图3

                                 图3

 由图4可见,当前程序运行到了之前设置的断点处,接下来,就可以根据你的需求动态剖析PostgreSQL的代码了

 

                            图4

 

 

 

 

posted @ 2013-09-09 16:46  rtems  阅读(1192)  评论(0)    收藏  举报