用eclipse开发和调试postgresql-8.4.1

时间:2023-03-09 13:19:10
用eclipse开发和调试postgresql-8.4.1

按照书本《PostgreSQL数据库内核分析》根据第一章讲解的linux下,编译 安装;不同的是libreadline5-dev版本没有了,就用新的版本代替;我的ubuntu 14 所以必须重新安装gcc-4.7版本,超过4.7版本编译会报错。

./configure

gmake

su

gmake install

adduserpostgres

mkdir /usr/local/pgsql/data

chownpostgres /usr/local/pgsql/data

su - postgres

/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data >logfile 2>&1 &

/usr/local/pgsql/bin/createdb test

/usr/local/pgsql/bin/psql test

这样就可以安装完成了,但是不能够用eclipse调试,因为按照书本附录A
用eclipse开发和调试postgresql
时候,Make
Target时,总是报错:比如/bin/tar:
sql-createdatabase.html:无法 open:
文件已存在。具体原因不是很清楚。

解决方法是,卸载原来在shell模式下编译安装的postgresql,方法就是直接删除postgresql安装的目录--pgsql这个文件夹(/usr/local/pgsql)。这样按照书本附录A就可以操作了。

我的配置代码:

 ./configure
--prefix=$HOME/pgsql --enable-depend --enable-cassert --enable-debug

尝试运行数据库

export
PATH=$HOME/pgsql/bin:$PATH

export
PGDATA=$HOME/pgsql/data

initdb

在P440,”Arguments”中输入”-D
~/pgsql/data”。

服务进程调试

“先输入psql进行登录,由于是本机,可以直接登录数据库。此时画面会停住”,不过我的画面没有停住,直接登录进去了。

在调试工具挂上postgre进程,回报错

Could
not attach to process.  If your uid matches the uid of the
target process, check the setting of
/proc/sys/kernel/yama/ptrace_scope, or try again as the root user.
 For more details, see /etc/sysctl.d/10-ptrace.conf

http://blog.csdn.net/fkdtzlzb/article/details/8783249有解决方法:

经过查阅有关资料发现,从ubuntu10.10开始,除非进程B是进程A的子进程,或者进程A为root运行,否则进程A不能调试进程B。这样一来增加了进程的安全。这个安全限制是默认的,但是可以通过修改配置文件来达到任意进程A可以调试进程B的目的。

1.可以通过下面的命令对这个限制进行临时修改,但是重启后限制依旧存在。

echo
0 | sudo tee /proc/sys/kernel/yama/ptrace_scope

2.可以通过修改配置文件来接触限制

修改前:

kernel.yama.ptrace_scope
= 1

修改后:

kernel.yama.ptrace_scope
= 0

重启之后可以生效。