Université Libanaise 2013-2014 Faculté des Sciences Master Pro : STRI STRI 404 Bases de données avancées TP n 6 : Débogage Oracle PL / SQL depuis Visual Studio Le débogueur PL/SQL intégré à Oracle Developer Tools (ODT) vous permet de rester à l intérieur de Visual Studio pour déboguer votre solution.net et Oracle. Vosu pouvez déboguer du code PL/SQL tel que les procédures et fonctions, les triggers depuis l environnement Visual Studio de la même façon que si vous déboguer votre code C# ou VB.NET. Avec le débogueur ODT intégrant PL/SQL, vous pouvez utiliser les techniques traditionnelles telle que les breakpoints, voir et modifier les valeurs des variables et examiner les appels de la pile. Vous pouvez utiliser le débogueur PL/SQL sous l un des 3 modes suivants : Direct Database Debugging Le mode de débogage de la base de données direct vous permet de déboguer le code PL/SQL directement depuis l environnement VISUAL BASIC. Quand vous utilisez ce mode, vous n avez pas besoin d une application Visual Studio ou d un code.net : vous travaillez directement avec le code PL/SQL dans la base de données. En effectuant un clique droit sur une procédure ou une fonction dans le Server Explorer, vous pouvez accéder une procédure ou une fonction PL/SQL, ou de lancer un breakpoint que vous avez défini. Vous pouvez bien sûr, passer des arguments et recevoir des valeurs de retour depuis le code PL/SQL. External Application Debugging Si vous avez besoin de déboguer un code PL/SQL utilisé depuis une application n utilisant pas Visual Studio, utilisez ce mode. Multi-tier Application Debugging Le mode le plus puissant pendant le développement d une application.net. Ce mode vous permet de déboguer à la fois vos codes.net et PL/SQL depuis Visual Studio. Vous pouvez passer directement du code.net au code PL/SQL et puis revenir au premier. On va s intéresser dans ce TP à ce dernier mode vu qu il va vous permettre de travailler simultanément avec vos codes.net et PL/SQL pensant la session de débogage. Pour commencer, extraire le fichier tp6.zip dans votre répertoire de travail. Création d une Oracle Connection Avant de commencer de créer votre application, ouvrir Visual Studio et créer une connexion. Effectuer les étapes suivantes : 1. Ouvrir Visual Studio.. 2. Sélectionner View > Server Explorer. 3. Cliquer droit Data Connections et sélectionner Add Connection... 4. Vérifier que la source de données est Oracle Database (ODP.NET, Managed Driver) 1
5. Rentrer votre identifiant et mot de passe, l adresse hôte, le numéro de port, et le nom de la base. Tester la connexion. Cliquer sur OK 2 fois. 6. Vous avez besoin de créer une connexion SYS. Cliquer droit Data Connections et sélectionner Add Connection.... Rentrer votre identifiant et mot de passe, l adresse hôte, le numéro de port, et le nom de la base. N oublier pas de sélectionner SYSDBA pour le rôle. Tester la connexion. Cliquer sur OK 2 fois. 2
Donner des privilèges pour le débogeur Avant de pouvoir utiliser le débogeur, vous devez donner les privilèges debug connect session et debug any procedure pour l utilisateur ANTOUN. Effectuer les étapes suivantes : 1. Dans le panel Server Explorer, cliquer droit SYS.test et sélectionner Query Window. 2. Entrer la commande suivante et cliquer sur Execute. GRANT debug any procedure, debug connect session TO antoun; 3. L instruction a été exécutée avec succès. Création d un Package PL/SQL Vous allez créer un package PL/SQL qui détermine si chaque nombre dans un tableau PL/SQL est un nombre premier et ensuite vous créez une nouvelle ligne dans la table JOBS en utilisant un record PL/SQL. Effectuez les opérations suivantes : 1. Dans le panel Server Explorer, click droit sur ANTOUN.test et sélectionner Query Window. 2. Copier le code contenu dans le fichier PLSQL_Debug_Package.txt et puis le coller dans Query Window et cliquer sur Execute. 3. Le package a été exécuté avec succès. 4. Copier le code contenu dans le fichier PLSQL_Debug_Packagebody.txt et puis le coller dans Query Window et cliquer sur Execute. 5. Le package body a été exécuté avec succès. 6. Dans le Server Explorer pour la connexion ANTOUN.test, cliquer sur Packages > OBE pour voir les listes d objets créés. 3
7. cliquer droit sur le package OBE et sélectionner Compile Debug. Cette action active le débogage du package. 8. Le package est compilé avec succès. Création d un Projet en Visual Studio Vous pouvez maintenant créer un projet. Effectuer les étapes suivantes : 1. Depuis la menu File, sélectionner New Project. 2. Choisir Project Type Visual C# : Windows, sélectionner le Template Console Application, rentrer plsqldebugobe1pour le nom et renter le répertoire là où vous voulez que les fichiers seront sauvegardés. Ensuite cliquer sur OK. 3. Le projet est crée. Ajouter une référence. 4. Sélectionner Project > Add Reference... 5. Sélectionner Oracle.DataAccess et cliquer sur OK. 6. Copier le code dans le fichier PLSQL_Debug_csharpcode.txt et le coller dans la fenêtre Program.cs dans Visual Studio. Ensuite cliquer droit sur le tab Program.cs et sélectionner Save Program.cs. Création de l environnement de débogage Quelques propriétés et options doivent être configurées avant d utiliser l environnement de débogage. Effectuer les étapes suivantes : 1. Sélectionner Project > plsqldebugobe1 Properties... 2. Sélectionner Debug. 3. Enlever la sélection sur Enable the Visual Studio hosting process et cliquer droit sur le tab plsqldebugobe1 et sélectionner Save Selected Items 4. Sélectionner Tools > Options... 5. Cliquer sur Oracle Developer Tools. Sélectionner PL/SQL Debugging. Cliquer le checkbox à côté de la connexion ANTOUN.test. Cliquer sur OK. 6. Sélectionner Tools > Oracle Application Debugging. Rentrer votre adresse IP. Cliquer sur OK. Création de Breakpoints Vous allez créer des breakpoints dans vos codes C# et PL/SQL pour stopper le débogeur durant l exécution. Effectuer les étapes suivantes : 1. Cliquer le tab Program.cs et localiser l instruction cmd.executenonquery(). 2. Dans le code Program.cs, créer un breakpoint à l instruction cmd.parameters.add(p_out_values). Cliquer n importe où sur la ligne, cliquer droit et sélectionner Breakpoint, ensuite sélectionner Insert Breakpoint. Alternativement, cliquer sur le bord en grislà où vous voulez de mettre un breakpoint. 3. Lindicateur breakpoint apparaît. 4. Créer un autre breakpoint après que l instruction est exécutée. 5. Dans Server Explorer, double cliquer DETERMINE_PRIMES pour ouvrir l code 6. Créer un breakpoint à la première instruction après l instruction BEGIN dans la procédure DETERMINE_PRIMES. 7. Depuis la liste des procédures, sélectionner ADD_NEW_JOB. 4
8. Créer un breakpoint à la première instruction après l instruction BEGIN. 9. Cliquer le tab Program.cs. Débogage PL/SQL Vous allez exécuter le programme en utilisant le débogeur. Effectuer les étapes suivantes : 1. Sélectionner Debug > Start Debugging... 2. Le débogeur s arrête au premier breakpoint. Pour voir les variables et leurs valeurs, cliquer le tab Local au bas de la fenêtre. Jeter un coup d oeil sur le code menant à ce breakpoint. 3. Pour passer à la ligne suivante, cliquer sur l icône Step Into. 4. Vous êtes à l instruction qui exécute la procédure PL/SQL. Cliquer sur l icône Step Into. 5. On arrive au breakpoint suivant dans la procédure DETERMINE_PRIMES. Noter que P_IN_VALUES est un tableau de 10 éléments, ainsi la boucle effectue 10 itérations. Cliquer l icône Continue plusieurs fois pour voir le changement des valeurs dans la fenêtre local. 6. Cliquer sur l icône + à côté de P_IN_VALUES dans la fenêtre local pour voir le contenu du tableau. 7. Cliquer le tab Call Stack (la rendre visible depuis la menu DEBUG).En examinant l appel de la pile, vous pouvez détermine le chemin du code à ce point courant dans l exécution de votre programme. 8. Désactiver ce breakpoint pour que le programme continue au breakpoint suivant. 9. Cliquer sur l icône Continue pour que le programme s exécute jusqu au breakpoint suivant. 10. Cliquer sur Step Into plusieurs fois. 11. Cliquer sur l icône Continue pour que le programme s exécute jusqu au breakpoint suivant. 12. On arrive au breakpoint de la procédure ADD_NEW_JOB 13. Si vous voulez voir le record PL/SQL JOBS_REC, il faut créer un Watch. Sélectionner JOBS_REC et cliquer droit, ensuite sélectionner Add Watch. Ensuite sélectionner le tab Watch au bas de la fenêtre. 14. La fenêtre Watch est une fenêtre de Visual Studio qui permet d examiner les variables d un programme. Étendre le Watch JOBS_REC 15. Cliquer Step Into 4 fois pour voir le Watch complètement peuplé. Ensuite cliquer sur Continue. 16. Quand le programme finit de s exécuter, les résultats seront affichés. 5