Linux下调试PostgreSQL数据库

来源:互联网 发布:石油大学华东网络教育 编辑:程序博客网 时间:2024/04/29 04:24

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调试postgres

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

psql (9.4.1)Type "help" for help.template1=# select * from test1;

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

在调试页面可以看到我们刚刚输入的字符串,说明程序能够正常调试。

0 0
原创粉丝点击