“Postgreql调试function的方法”的版本间的差异

来自软件实验室
跳转至: 导航搜索
pldbgapi的安装
 
(未显示同一用户的5个中间版本)
第1行: 第1行:
 +
== pldbgapi的安装 ==
 
能够单步调试function/trigger是非常重要的,尤其是逻辑比较复杂的function/trigger。实现这个功能有两个途径:
 
能够单步调试function/trigger是非常重要的,尤其是逻辑比较复杂的function/trigger。实现这个功能有两个途径:
  
第4行: 第5行:
 
# 由于版权的限制,Linux各版本自己附带的postgresql是没有function/trigger功能的,需要从 http://git.postgresql.org/gitweb/?p=pldebugger.git;a=summary 下载pldebugger的源代码自己编译debugger模块。
 
# 由于版权的限制,Linux各版本自己附带的postgresql是没有function/trigger功能的,需要从 http://git.postgresql.org/gitweb/?p=pldebugger.git;a=summary 下载pldebugger的源代码自己编译debugger模块。
  
下面重点说下第二种方法的具体步骤:
+
下面重点说下第二种方法的具体步骤(base on debian jessie)。由于debian较为严格的版权限制,postgresql-9.4中并没有包含pgdebugger extension,但是有源代码呢,go on!
 +
 
 +
# 下载postgresql 9.4的源码先:http://www.postgresql.org/ftp/source/v9.4.4/
 +
# 安装编译postgresql的依赖包:aptitude install libreadline-dev zlib1g-dev
 +
# 下载pldebugger的源码:git clone git://git.postgresql.org/git/pldebugger.git ,然后把pldebugger的源码复制到postgresql源码的contrib目录下
 +
# 在postgresql源码中执行./configure;make,然后在contrib/pldebugger中执行make
 +
# 把contrib/pldebugger中生成的plugin_debugger.so文件复制到/usr/lib/postgresql/9.4/lib/目录下
 +
# 把contrib/pldebugger中的extension control文件等复制到extension目录下:
 +
<nowiki>
 +
cp pldbgapi.control pldbgapi--1.0.sql pldbgapi--unpackaged--1.0.sql /usr/share/postgresql/9.4/extension/
 +
</nowiki>
 +
# 修改postgresql的配置文件/etc/postgresql/9.4/main/postgresql.conf,增加如下的行:
 +
<nowiki>
 +
shared_preload_libraries = '$libdir/plugin_debugger.so'
 +
</nowiki>
 +
# restart postgresql server: service postgresql restart
 +
# 登陆你的数据库中,比如test,创建pldbgapi extension:
 +
<nowiki>
 +
psql test;
 +
# create extension pldbgapi;
 +
</nowiki>
 +
# 打开pgadmin3,右键点击一个函数或者触发器函数,如果出现如下的debug字样就表示成功了:
 +
[[文件:pldebugger_init.png]]
 +
 
 +
== postgresql函数、触发器调试技术 ==
 +
 
 +
 
 +
== 参考 ==
 +
*  http://www.postgresonline.com/journal/archives/214-Using-PgAdmin-PLPgSQL-Debugger.html

2015年12月4日 (五) 08:59的最新版本

pldbgapi的安装

能够单步调试function/trigger是非常重要的,尤其是逻辑比较复杂的function/trigger。实现这个功能有两个途径:

  1. 安装和使用enterpriseDB,内置了funtion/trigger的单步调试功能。
  2. 由于版权的限制,Linux各版本自己附带的postgresql是没有function/trigger功能的,需要从 http://git.postgresql.org/gitweb/?p=pldebugger.git;a=summary 下载pldebugger的源代码自己编译debugger模块。

下面重点说下第二种方法的具体步骤(base on debian jessie)。由于debian较为严格的版权限制,postgresql-9.4中并没有包含pgdebugger extension,但是有源代码呢,go on!

  1. 下载postgresql 9.4的源码先:http://www.postgresql.org/ftp/source/v9.4.4/
  2. 安装编译postgresql的依赖包:aptitude install libreadline-dev zlib1g-dev
  3. 下载pldebugger的源码:git clone git://git.postgresql.org/git/pldebugger.git ,然后把pldebugger的源码复制到postgresql源码的contrib目录下
  4. 在postgresql源码中执行./configure;make,然后在contrib/pldebugger中执行make
  5. 把contrib/pldebugger中生成的plugin_debugger.so文件复制到/usr/lib/postgresql/9.4/lib/目录下
  6. 把contrib/pldebugger中的extension control文件等复制到extension目录下:
cp pldbgapi.control pldbgapi--1.0.sql pldbgapi--unpackaged--1.0.sql /usr/share/postgresql/9.4/extension/

  1. 修改postgresql的配置文件/etc/postgresql/9.4/main/postgresql.conf,增加如下的行:
shared_preload_libraries = '$libdir/plugin_debugger.so' 

  1. restart postgresql server: service postgresql restart
  2. 登陆你的数据库中,比如test,创建pldbgapi extension:
psql test;
# create extension pldbgapi;

  1. 打开pgadmin3,右键点击一个函数或者触发器函数,如果出现如下的debug字样就表示成功了:

Pldebugger init.png

postgresql函数、触发器调试技术

参考