1. 程式人生 > >讓postgresql支援儲存過程(函式)的除錯

讓postgresql支援儲存過程(函式)的除錯

原帖地址:http://blog.chinaunix.net/uid-280772-id-2135418.html


用PG做了些專案,積累了些經驗,其中之一就是在PG下除錯function。
    可以設定break point,單步除錯,就象在eclipse裡面除錯java code,一個很複雜的function通過這種方式很快就找出問題,大大提高開發效率。(注:要求pg8.2及以上版本)
    PG預設是不支援function除錯的,要在PG裡除錯function得安裝enterpriseDB提供的pg外掛edb-debugger(

PL/pgSQL Debugger. Currently requires PostgreSQL 8.2 or higher (orEnterpriseDB 8.1.4 or higher).The PL/pgSQL debugger lets you step through PL/pgSQL code, set andclear breakpoints, view and modify variables, and walk through the callstack)
   
安裝edb-debugger:
1)原始碼方式安裝pg,(這裡不作詳細說明,請參照我的另一篇文章)
2)下載edb-debugger
    地址:http://pgfoundry.org/projects/edb-debugger/,目前最新版本為0.92
3)解壓edb-debugger到pg的原始碼目錄下的contrib下面(我的目錄:/home/lyb/postgresql-8.3.3/contrib/pldebugger)
,進入pldebugger目錄。
4)make
5)make install
好,現在edb-debugger已經安裝完成

配置pg
1)更改資料庫目錄下的postgresql.conf,加入如下紅色語句
#shared_preload_libraries = '' # (change requires restart)(這個系統預設下是註釋掉的,在這句下面加入下面語句)
shared_preload_libraries = '$libdir/plugins/plugin_debugger'(這是新加入的)
2)重新啟動pg
3)在要進行除錯的資料庫裡執行pldbgapi.sql檔案,這個檔案在你pg安裝目錄的share/postgresql/contrib/下面

除錯pg的function
1)開啟pgadmin3,開啟你要除錯的資料庫,在你要除錯的function上右擊,這時你會發現多了一項Debugging,佔擊子項中的debug就可對function進行除錯了。
2)我的除錯圖