2011-10-23 14 views
64

Mi riferisco a this per abilitare il debugger nel server PostgreSQL al fine di eseguire il debug della funzione plpgsql passando attraverso i codici utilizzando pgadmin.Debug Funzione PostgreSQL tramite pgAdmin

Ho già impostato shared_preload_libraries = '$libdir/plugins/plugin_debugger.dll' nello postgresql.conf, eseguito pldbgapi.sql e riavviato il server.

Questi passaggi avrebbero dovuto essere eseguiti correttamente e plugin_debugger.dll deve essere caricato correttamente come può essere verificato utilizzando il comando show shared_preload_libraries, e posso vedere l'opzione di debug nel menu di scelta rapida con un clic destro su una funzione in pgAdmin.

enter image description here

Quando si sceglie "Debugging" -> Debug, si apre una finestra per permettermi di immettere i valori per i parametri di input. Ma dopo, quando preme OK, non risponde affatto.

enter image description here

Tutte le idee o mi sono perso qualcosa nella messa a punto del debugger sul server ??

Sto usando PostgreSQL 8.3 e 1.14 pgAdmin

+9

+1 buona domanda. Non so perché fallisce, però. Se non si presenta nulla, puoi sempre inviare la tua domanda alla lista di supporto pgAdmin: [email protected] (includi un link alla tua domanda qui). Vedi [lista archivio qui] (http://archives.postgresql.org/pgadmin-support/2011-10/threads.php). –

+0

Grazie Erwin per il collegamento, ho già inviato le domande al supporto pgAdmin –

+5

Risposta !!! http://archives.postgresql.org/pgadmin-support/2011-10/msg00052.php –

risposta

2

Ken,

Hai provato pgAdmin 1,8 per escludere questione con PgAdmin 1.14/PostgreSQL 8.3 interazione. È passato un po 'di tempo da quando ho usato 8.3 e per l'articolo che ho scritto, a cui mi riferisci, stavo testando con 1.14/PostgreSQL 9.1, quindi potrebbe benissimo essere un problema con l'interazione con la versione precedente. Purtroppo non ho più un 8.3 da testare.

Ricordo vagamente di aver avuto il problema una volta, ma era quando avevo un'altra libreria condivisa nel mio postgresql.conf oltre al pldebugger. Non ricordo quale era, ma rimuovere l'altra libreria condivisa ha risolto il problema.

Speranza alcuni di questi suggerimenti aiutano, Regina

+0

Grazie Regina. Ho provato a usare pgAdmin 1.14, 1.12 e 1.8 con il server PostgreSQL 8.13.16, e il problema esiste ancora. Ma nel PC del mio ufficio, ho provato a usare pgAdmin 1.12 con il server PostgreSQL 8.13.5, e funziona molto bene. Cercherò di utilizzare l'ultima versione di PostgreSQL 9.1 se sono libero –

+0

Mi chiedo se sia una sorta di cosa antivirus che lo blocca poi. – LR1234567

+0

Grazie Regina per il suggerimento. Ma ho disabilitato l'antivirus (che è Avira AntiVir) e il firewall della finestra, ma ancora non funziona. –

1

ho avuto lo stesso problema. Assicurati che il solo lib condivisa che stai caricando nel postgres.conf sia il debugger. Nient'altro. Nemmeno il profiler. Se si verifica un errore SSL durante il tentativo di eseguire il debug di una funzione, riconnettersi al server.

5

È necessario abilitare il debug in due posizioni. Su PGAdmin e sul database stesso. L'articolo a cui fai riferimento fa un ottimo lavoro spiegandolo ma c'erano alcune sfumature.

PgAdmin

Durante l'aggiornamento del file di postgresql.conf di caricare la libreria di debug, ero running PGAdmin on Windows in modo che il file è stato qui:

C:\Program Files\PostgreSQL\9.4\data\postgresql.conf 

E il percorso del plugin_debugger.dll era in realtà

$libdir/plugin_debugger.dll 

non

$libdir/plugins/plugin_debugger.dll 

come specificato nell'articolo. Così il vostro postgresql.conf avrebbe bisogno di una linea come questa

shared_preload_libraries = '$libdir/plugin_debugger.dll' 

Cercare il dll reale se siete in dubbio. Se sei su Linux, il file che stai cercando è plugin_debugger.so. Non dimenticare che la modifica del file postgresql.conf richiederà un riavvio per rendere effettive le modifiche.

PostgreSQL Database

Supponendo che si sta eseguendo il database PostgreSQL su un server Linux this gist fa un ottimo lavoro a spiegare come scaricare le dipendenze per abilitare il debug. Assicurati di essere eseguito come root durante l'installazione.

La parte che è facile perdere è l'emissione del comando sul database effettivo che si desidera eseguire il debug. Per le versioni più recenti su PostgreSQL tutto avrete bisogno di fare è questo:

CREATE EXTENSION IF NOT EXISTS pldbgapi; 

Se che non restituisce un errore, si dovrebbe essere pronti per partire.

Alcune cose aggiuntive di nota:

  • Come accennato in precedenza, è possibile solo quando si esegue il debug di un account utente con privilegi
  • Da their docs si può solo funzioni di debug PL/pgSQL. Quindi se la tua funzione dice qualcosa come LANGUAGE c PGAdmin non mostrerà nemmeno un'opzione di menu Debug con il pulsante destro del mouse quando selezioni la funzione. Cerca qualcosa che ha LANGUAGE plpgsql e dovrebbe mostrare il menu Debug.
Problemi correlati