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

来自软件实验室
跳转至: 导航搜索
pldbgapi的安装
 
(未显示同一用户的3个中间版本)
第8行: 第8行:
  
 
# 下载postgresql 9.4的源码先:http://www.postgresql.org/ftp/source/v9.4.4/
 
# 下载postgresql 9.4的源码先:http://www.postgresql.org/ftp/source/v9.4.4/
# 安装编译postgresql的依赖包:aptitude install libreadline-dev
+
# 安装编译postgresql的依赖包:aptitude install libreadline-dev zlib1g-dev
# 下载pldebugger的源码:git clone git://git.postgresql.org/git/pldebugger.git,然后把pldebugger的源码复制到postgresql源码的contrib目录下
+
# 下载pldebugger的源码:git clone git://git.postgresql.org/git/pldebugger.git ,然后把pldebugger的源码复制到postgresql源码的contrib目录下
# 在postgresql源码的contrib/pldebugger中执行./configure;make
+
# 在postgresql源码中执行./configure;make,然后在contrib/pldebugger中执行make
 
# 把contrib/pldebugger中生成的plugin_debugger.so文件复制到/usr/lib/postgresql/9.4/lib/目录下
 
# 把contrib/pldebugger中生成的plugin_debugger.so文件复制到/usr/lib/postgresql/9.4/lib/目录下
 
# 把contrib/pldebugger中的extension control文件等复制到extension目录下:
 
# 把contrib/pldebugger中的extension control文件等复制到extension目录下:
第17行: 第17行:
 
</nowiki>
 
</nowiki>
 
# 修改postgresql的配置文件/etc/postgresql/9.4/main/postgresql.conf,增加如下的行:
 
# 修改postgresql的配置文件/etc/postgresql/9.4/main/postgresql.conf,增加如下的行:
  </nowiki>
+
  <nowiki>
shared_preload_libraries = '$libdir/plugins/plugin_debugger.so'  
+
shared_preload_libraries = '$libdir/plugin_debugger.so'  
 
</nowiki>
 
</nowiki>
 
# restart postgresql server: service postgresql restart
 
# restart postgresql server: service postgresql restart
第26行: 第26行:
 
# create extension pldbgapi;
 
# create extension pldbgapi;
 
</nowiki>
 
</nowiki>
# 打开pgadmin3,右键点击一个函数或者触发器函数,如果出现debug字样就表示成功了!
+
# 打开pgadmin3,右键点击一个函数或者触发器函数,如果出现如下的debug字样就表示成功了:
 +
[[文件:pldebugger_init.png]]
  
 
== postgresql函数、触发器调试技术 ==
 
== postgresql函数、触发器调试技术 ==
  
  
参考:
+
== 参考 ==
 
*  http://www.postgresonline.com/journal/archives/214-Using-PgAdmin-PLPgSQL-Debugger.html
 
*  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函数、触发器调试技术

参考