您的位置:首页 > 运维架构 > Linux

Linux下调试PostgreSQL数据库

2015-09-01 11:44 696 查看

1.环境准备

这里采用的是源码安装的方式进行postgresSQL安装的,源码下载在这里

准备源码包为:postgresql-9.4.1.tar.gz

操作系统:ubuntu 14.04 x64 server

解压源码包:

#tar zxvf postgresql-9.4.1.tar.gz
#cd postgresql-9.4.1/
#./configure --enable-debug  --without-readline --without-zlib
#make -j4
#make install


这里在执行configure的时候,需要增加debug选项,这样生成的makefile文件才会有-g调试选项,另外,生成makefile文件之后还需要修改一下
./src
目录下的
Makefile.global
文件,将其中的-O2选项去掉,由于-O2选项编译优化可能会打乱代码秩序,对于源代码流程查阅可能有影响。

2.使用数据库

上面第一步已经完成了数据库的安装,接下来是使用数据库,那么如何使用。处于安全性考虑Postgresql是不会让你用root用户操作的,所以这里需要增加一个数据库专用用户。

#adduser postgre
#chown -R postgre:postgre /usr/local/pgsql/


接下来切换用户,然后初始化postgreSQL的数据文件:

#su postgre
$cd ~
$mkdir data
$/usr/local/pgsql/bin/initdb data/ //初始化数据库文件
$/usr/local/pgsql/bin/pg_ctl -D data/ -l logfile start //启动数据库服务
$/usr/local/pgsql/bin/psql template1 //进入数据库服务


到这一步就可以进入postgreSQL数据库服务器了,可以执行语句,具体如下所示:

psql (9.4.1)
Type "help" for help.

template1=# select pg_backend_pid();
pg_backend_pid
----------------
31073
(1 row)


这里通过select pg_backend_pid()函数调用来获取postgresSQL实例的进程号。接下来就是gdb神奇的功能了,gdb可以通过进程号调试正在运行的进程,当然,此举必须在root用户下执行。新开一个ssh窗口,切换到root用户,输入:

#gdb /usr/local/pgsql/bin/postgres 31073


这样就启动了gdb调试器,于是就可以调试postgres程序了,如下图所示:



当我们在gdb中输入s(step)时,会发现此时程序阻塞了,这时候是在等待用户的数据,我们切换到postgre用户窗口,在
template1=#
中输入SQL语句。

psql (9.4.1)
Type "help" for help.

template1=# select * from test1;


切换到root窗口,可以发现gdb调试程序不再阻塞,如下图所示:





在调试页面可以看到我们刚刚输入的字符串,说明程序能够正常调试。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 postgresql