65 votes

Déboguer une fonction PostgreSQL en utilisant pgAdmin

Je me réfère este pour activer le débogueur dans le serveur PostgreSQL afin de déboguer la fonction plpgsql en parcourant les codes à l'aide de pgadmin.

J'ai déjà mis shared_preload_libraries = '$libdir/plugins/plugin_debugger.dll' dans le postgresql.conf , courir pldbgapi.sql et redémarrer le serveur.

Ces étapes devraient avoir été exécutées avec succès et plugin_debugger.dll devrait être chargé avec succès, comme on peut le vérifier en utilisant la commande show shared_preload_libraries Je peux voir l'option de débogage dans le menu contextuel en faisant un clic droit sur une fonction dans pgAdmin.

enter image description here

Lorsque je choisis "Debugging" --> Debug, une fenêtre s'ouvre pour me permettre de saisir les valeurs des paramètres d'entrée. Mais après cela, lorsque j'appuie sur OK il ne répond pas du tout.

enter image description here

Une idée ou j'ai raté quelque chose dans la configuration du débogueur sur le serveur ?

J'utilise PostgreSQL 8.3 et pgAdmin 1.14.

8voto

Joel B Points 881

Vous devez activer le débogage à deux endroits. Sur PGAdmin et sur la base de données elle-même. L'article que vous avez cité en référence l'explique très bien, mais il y a des nuances.

PGAdmin

Lors de la mise à jour de votre postgresql.conf pour charger la bibliothèque de débogage, j'étais Exécution de PGAdmin sous Windows donc le fichier était ici :

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

Et le chemin vers le plugin_debugger.dll était en fait

$libdir/plugin_debugger.dll

no

$libdir/plugins/plugin_debugger.dll

comme indiqué dans l'article. Ainsi, votre postgresql.conf il faudrait une ligne comme celle-ci

shared_preload_libraries = '$libdir/plugin_debugger.dll'

En cas de doute, recherchez le fichier .dll. Si vous êtes sous Linux, le fichier que vous recherchez est le suivant plugin_debugger.so . N'oubliez pas que la modification du postgresql.conf nécessitera un redémarrage pour que le changement prenne effet.

Base de données PostgreSQL

En supposant que vous exécutez votre base de données PostgreSQL sur un serveur Linux cette phrase fait un excellent travail en expliquant comment télécharger les dépendances pour activer le débogage. Assurez-vous de vous exécuter en tant que Root lors de l'installation.

La partie la plus facile à oublier est l'exécution de la commande sur la base de données que vous souhaitez déboguer. Pour les nouvelles versions de PostgreSQL, tout ce que vous devez faire est ceci :

CREATE EXTENSION IF NOT EXISTS pldbgapi;

Si cela ne renvoie pas d'erreur, vous devriez être prêt à partir.

Quelques éléments supplémentaires à noter :

  • Comme mentionné ci-dessus, vous ne pouvez déboguer qu'en utilisant un compte super utilisateur.
  • De leurs docs vous ne pouvez déboguer que les fonctions pl/pgsql. Donc si votre fonction dit quelque chose comme LANGUAGE c PGAdmin n'affiche même pas d'option de menu Debug par un clic droit lorsque vous sélectionnez la fonction. Cherchez quelque chose qui a LANGUAGE plpgsql et le menu Debug devrait s'afficher.

2voto

LR1234567 Points 496

Ken,

Avez-vous essayé pgAdmin 1.8 pour éliminer le problème d'interaction entre PgAdmin 1.14 et PostgreSQL 8.3 ? Cela fait un moment que je n'ai pas utilisé la 8.3 et pour l'article que j'ai écrit -- auquel vous faites référence, je testais avec la 1.14/ PostgreSQL 9.1, donc cela pourrait très bien être un problème d'interaction avec l'ancienne version. Malheureusement je n'ai plus de 8.3 pour tester.

Je me souviens vaguement avoir eu le même problème que vous une fois, mais c'était lorsque j'avais une autre bibliothèque partagée dans mon postgresql.conf en plus de pldebugger. Je ne me souviens plus laquelle, mais la suppression de l'autre bibliothèque partagée a réglé mon problème.

J'espère que certaines de ces suggestions vous aideront, Regina

1voto

foo Points 11

J'ai eu le même problème. Assurez-vous que le uniquement La librairie partagée que vous chargez dans postgres.conf est le débogueur. Rien d'autre. Pas même le profileur. Si vous obtenez une erreur SSL en essayant de déboguer une fonction, reconnectez-vous au serveur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X