... Trigger - Fehlersuche (Debugging)



Ähnliche Dokumente
C/C++ Debugging mit CDT unter Eclipse

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion

Visual Basic Editor CATIA V5

Aufbau und Bestandteile von Formularen. Oracle Forms. Erstellen eines neuen Blocks (1) Starten von Oracle Forms

Debugging in APEX. Christina Funke Apps Associates GmbH Dortmund

Logging und Debugging. Gerd Volberg OPITZ CONSULTING Deutschland GmbH

... Eine Form Builder- Anwendung ausführen

C++ - Einführung in die Programmiersprache Fehler abfangen. Leibniz Universität IT Services Anja Aue

Teil I Debuggen mit gdb

... Flexiblen Code schreiben

Oracle Forms. Aufbau und Bestandteile von Formularen. Erstellen eines neuen Blocks. Starten von Oracle Forms

... Fenster und Content Canvases erstellen

Erste Schritte mit Eclipse

Debugging mit ddd (Data Display Debugger)

Prozedurale Datenbank- Anwendungsprogrammierung

Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum:

PL/SQL-Code mit APEX generieren

ELO Click & Find. Technische Dokumentation ELO Click & Find. Inhalt. [Stand: Programmversion: ]

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services

INFORMATIK TEIL: VBA. Infromatik WS 17/18 Teil: VBA. Allgemeines: - 4 Übungen á 3 Stunden

Informatik I Übung, Woche 40

Praktikum zur Vorlesung Einführung in die Programmierung WS 17/18 Blatt 4

Bei der Weitergabe des Befehls an das Programm ist ein Fehler aufgetreten

1. Python Interpreter installieren (WinPython)

Oracle 12c: Neuerungen in PL/SQL. Roman Pyro DOAG 2014 Konferenz

Visual Basic Express Fehlerermittlung

Microsoft Visual Studio Community 2015

C# - Einführung in die Programmiersprache Fehler abfangen. Leibniz Universität IT Services Anja Aue

Ausnahmebehandlung. Ausnahmebehandlung mit PL/SQL. Ausnahmetypen. Ausnahmebehandlung

Access Programmierung. Ricardo Hernández García. 1. Ausgabe, November 2013 ACC2013P

Beheben von Problemen bei SSH-Verbindungen in Reflection X

Access für Windows. Andrea Weikert 1. Ausgabe, 4. Aktualisierung, Juni Grundlagen für Anwender

Anleitung OCAD 12 Multi-Repräsentation

2.1 Visual C Express installieren Visual C Express starten Visual C Express registrieren...

Ich war's nicht! Fehler & Ursachensuche in APEX Peter Raganitsch FOEX GmbH Österreich Schlüsselworte APEX, Fehler, Debug, Logging, Nachforschung.

Willkommen zum Picture Package DVD Viewer. Starten und Beenden des Picture Package DVD Viewer. Anzeigen von Bildern

SQL Developer Unit Tests

Team Developer 7.1 Multithreading

Technische Informatik für Ingenieure Winter 2005/2006 Übungsblatt Nr. 3

Programmieren in Haskell Debugging

Grundlagen der OO- Programmierung in C#

Informatik für Elektrotechnik und Informationstechnik

µversion 2 Einführung

Strukturierte Objekttypen

Drucken unter Windows

Oracle Forms Was validiere ich wo?

Java-Tutorium WS 09/10

ECDL MODUL COMPUTING. Syllabus Version 1.0

PV-Cam Viewer. App Store/Google Play Installation Schnellanleitung

Quartalsabschluss mit easymed

Erste Java-Programme (Scopes und Rekursion)

1 Visual-LISP Editor ab AutoCAD 2000

SimEdit Software Benutzerhandbuch. Ver 1.0

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

IDEP / KN8 für WINDOWS. Schnellstart

Installation & Anwendung Xdebug für Eclipse

Objektorientierte PL/SQL-Entwicklung Ein Erfahrungsbericht aus Sicht von JAVA-Entwicklern

Geschäftslogik in die Datenbank Umstellung eines Kernbanksystems

Kapitel 5 auf einen Blick

CADSTAR MRP-Link. MRP-Link ist erstellt von:

Nutzerhinweis Verwendung nutzerdefinierter Modellelemente ExternalTypes in SimulationX 3.7

7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});

IBM Software Demos Rational Systems Developer Introduction

PL/SQL. Deklaration von Variablen. Inhalt. PL/SQL Block Struktur. PL/SQL Block Struktur

BASIC-Tiger Starter Kit. Tel: +49 (241) Fax: +49 (241)

Hilfe zu Fiery Optionen 1.3 (Client- Computer)

Diese Vorbereitungen müssen bei allen Druckern getroffen werden:

Technische Informatik für Ingenieure WS 2010/2011 Musterlösung Übungsblatt Nr. 3

REXX. Was ist REXX. Scriptsprache für viele Plattformen Erste Schritte F. Hodel os2.a-net.ch

Richtig einsteigen: Access 2007 VBA-Programmierung

Einführung. Einführung in NTI Shadow. Übersicht über den Begrüßungsbildschirm

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Vom Testkonzept zu JUnit

Herunterladen von Schriftarten

Übung 00 Einrichten der Entwicklungsumgebung

Daniela Reiner. Stuttgart,

Anleitung. UTF-8 codierte CSV-Dateien mit Microsoft Excel öffnen und anwenden

Objekt-relationales Datenbanksystem Oracle

UPS WorldShip Installation eines Arbeitsgruppenplatz Arbeitsstation

Explizite Cursor. Cursor. Steuerung des expliziten Cursors. Explizite Cursor Funktionen

ACCESS. Formulare per VBA referenzieren FORMULARE MIT VBA PROGRAMMIEREN FORMULARE PER VBA REFERENZIEREN BASICS

Übungsblatt 1. Java Vorkurs (WS 2017)

iphoto und AppleScript

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2017/18. Vorbereitende Aufgaben

Einheit 06: Debugging in Eclipse

Funktionen nur wenn dann

Javakurs für Anfänger

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski.

Microcontroller Praktikum SS2010 Dipl. Ing. R. Reisch

Willkommen zum Picture Package DVD Viewer

Erste Schritte mit Citrix ShareFile

Technische Informatik für Ingenieure WS 2010/2011 Übungsblatt Nr. 3

Rechnerarchitektur, Einführung in die Laborübungen

Transkript:

14... Trigger - Fehlersuche (Debugging)

Kapitel 14: Trigger - Fehlersuche (Debugging) Ziele Am Ende dieser Unterrichtseinheit verfügen Sie über folgende Kenntnisse: Die Debugger-Komponenten Form-Modul im Debug-Modus ausführen Fehlersuche und -behebung (Debug) für PL/SQL-Code 14-2 Copyright Oracle Corporation, 1998. All rights reserved. 14-2 Oracle Developer: Form Builder I

Einführung Einführung Übersicht In diesem Kapitel erfahren Sie, wie Sie mit dem PL/SQL Debugger Fehler in Triggern suchen und beheben, indem Sie Code zeilenweise ausführen. Sie erfahren auch, wie Sie Variablen mit dem Debugger anzeigen und ändern. Ziele Am Ende dieser Unterrichtseinheit verfügen Sie über folgende Kenntnisse: Debugger-Komponenten beschreiben, Form-Modul im Debug-Modus ausführen, PL/SQL-Code nach Fehlern suchen (Debug). Oracle Developer: Form Builder I 14-3

Kapitel 14: Trigger - Fehlersuche (Debugging) Trigger - Fehlersuche Triggers überwachen und auf Fehler durchsuchen mittels: Kompilieren und Beheben von Fehlern im PL/SQL-Editor Anzeigen von Debug-Meldungen zur Laufzeit Starten von PL/SQL Debugger 14-3 Copyright Oracle Corporation, 1998. All rights reserved. Tips zur Fehlersuche Für SQL-Kompilierung Verbindung zur Datenbank herstellen. Die Zeile, in der der Fehler auftritt, ist nicht immer verantwortlich. Auf fehlende Semikolons und Anführungszeichen achten. Trigger auf der richtigen Ebene definieren. Trigger dort positionieren, wo das Ereignis eintreten wird. 14-4 Copyright Oracle Corporation, 1998. All rights reserved. 14-4 Oracle Developer: Form Builder I

Trigger nach Fehlern durchsuchen Trigger nach Fehlern durchsuchen Fehlerbehebung für Trigger in Form Builder Mit Form Builder können Sie Trigger auf verschiedene Arten überwachen und Fehler darin beheben: Kompilieren: Syntax-Fehler und Objektreferenz-Fehler (einschließlich Referenzen auf Datenbankobjekte) werden angezeigt, wenn Sie einen Trigger kompilieren oder das Form-Modul generieren. So können Sie diese Probleme im PL/SQL-Editor vorab beheben. Form mit Laufzeit-Parameter debug_messages=yes ausführen: Im Debug-Modus können Sie anfordern, daß Meldungen angezeigt werden, aus denen ersichtlich wird, wann Trigger ausgelöst werden. So können Sie sehen, ob bestimmte Trigger ausgelöst werden, den Ursprung und die Ebene des Triggers, und wann sie ausgelöst werden. PL/SQL Debugger starten: Mit dem Debugger können Sie die Ausführung von Code innerhalb eines Triggers (und anderer Programmblöcke) überwachen. Sie können schrittweise, d.h., Zeile für Zeile durch den Code gehen, und Sie können dabei aufgerufene Prozeduren und Variablen überwachen. Sie können auch beliebige PL/SQL-Anweisungen übergeben, während die Form ausgeführt wird und Variablen bearbeiten. Allgemeine Tips, um Trigger-Probleme zu lösen Stellen Sie sicher, daß eine Verbindung zur (richtigen) Datenbank hergestellt ist, wenn Sie Trigger kompilieren, die SQL-Code enthalten. Fehlermeldungen können auch täuschen. Der PL/SQL-Editor meldet die fehlerhafte Zeile, aber der Fehler kann in der Abhängigkeit von einer früheren Code-Zeile liegen. Fehlende Semikolons (;) und nicht zusammengehörige Anführungszeichen sind eine häufige Ursache für Kompilierungsfehler. Überprüfen Sie das, falls ein Kompilierungsfehler das Problem nicht deutlich macht. Falls ein Trigger scheinbar zu häufig oder für den falschen Block, das falsche Item innerhalb der Form ausgelöst wird, prüfen Sie, ob er auf der richtigen Ebene definiert wurde. Ein Trigger When-Validate-Item auf Form-Ebene wird beispielsweise für jedes geänderte Item in der Form ausgelöst. Um das zu überprüfen, können Sie die Form mit aktivierter Option Debug Messages ausführen. Im Falle von Triggern, die andere Items mit Daten füllen, sollten Sie sicherstellen, daß der Trigger zu dem Objekt gehört, in dem das Auslöse- Ereignis stattfindet, und nicht zu den Items, die mit Daten zu füllen sind. Oracle Developer: Form Builder I 14-5

Kapitel 14: Trigger - Fehlersuche (Debugging) Form im Debug-Modus ausführen Run Form Debug (automatische Kompilierung) Enthält Source Code und ausführbaren Code.FMX (automatische Ausführung) Form im Debug- Modus ausführen 14-5 Copyright Oracle Corporation, 1998. All rights reserved. 14-6 Oracle Developer: Form Builder I

Trigger nach Fehlern durchsuchen Form-Modul im Debug-Modus ausführen Im Debug-Modus können Sie Trigger überwachen, die ausgelöst werden und den PL/SQL Debugger verwenden. Um interaktiv auf Code im Debugger zuzugreifen, muß das Laufzeit-Modul (.fmx) neu erstellt werden, so daß es Quellversionen des Form-Codes enthält. Um eine Form im Debug-Modus auszuführen, gehen Sie wie folgt vor: 1 Klicken Sie auf die Schaltfläche Run Form Debug im Navigator, oder wählen Sie Program->Run Form->Debug aus dem Menü. Das Form- Modul wird automatisch kompiliert (neue.fmx-datei) und ausgeführt. 2 Sobald das Form-Modul gestartet wird, wird der PL/SQL Debugger angezeigt, so daß Sie Debug-Aktionen durchführen können, ehe die Forms ausgeführt werden. Sobald Sie den Debugger beenden, wird die Form ausgeführt. Meldungen anzeigen, wenn Trigger ausgelöst werden Sie können bei jedem Auslösen eines Triggers eine Meldung anzeigen (die bestätigt werden muß, ehe die Ausführung fortgesetzt wird). Diese Meldungen werden auf der Meldungszeile angezeigt, und enthalten Trigger- Typ und -Wirkungskreis. Um Meldungen anzuzeigen, führen Sie die Form über die Befehlszeile aus und geben dabei die Option Debug_Messages an. Zum Beispiel in MS Windows: f50run32 module=myform userid=scott/tiger debug_messages=yes Die einzelnen Meldungen werden unmittelbar vor der Ausführung des Triggers angezeigt, woraus Sie den aktuellen Status der Form vor den Auswirkungen des Triggers ersehen. Oracle Developer: Form Builder I 14-7

Kapitel 14: Trigger - Fehlersuche (Debugging) PL/SQL Debugger 1 2 3 4 14-6 Copyright Oracle Corporation, 1998. All rights reserved. PL/SQL Debugger 5 6 7 8 9 10 14-7 Copyright Oracle Corporation, 1998. All rights reserved. 14-8 Oracle Developer: Form Builder I

Trigger nach Fehlern durchsuchen Der PL/SQL Debugger Mit dem PL/SQL Debugger können Sie folgende Aufgaben ausführen: Schrittweise Programmblöcke durchlaufen und dabei die einzelnen Elemente überprüfen. Den Status von Variablen während der Ausführung prüfen oder ändern. Unterbrechungspunkte setzen, um die Ausführung auszusetzen, damit Sie den Anwendungsstatus an einem bestimmten Punkt analysieren können. Debug-Aktionen definieren, die bei bestimmten Ereignissen ausgeführt werden (Debug-Trigger). PL/SQL-Anweisungen während der Ausführung hinzufügen. Der Debugger enthält folgende Komponenten (siehe Folien gegenüber): 1 Navigator- Steuerungen 2 Quell- Ausschnitt 3 Navigator- Ausschnitt 4 Interpreter- Ausschnitt 5 Step Into (Schaltfläche) 6 Step Over (Schaltfläche) 7 Step Out (Schaltfläche) 8 Go (Schaltfläche) 9 Reset (Schaltfläche) 10 Close (Schaltfläche) Help, Create, Delete, Expand, Collapse, Expand All, Collapse All, Find (mit diesen Optionen steuern Sie den Navigator-Ausschnitt, wie beim Object Navigator- Hauptfenster). Eine schreibgeschützte Kopie des aktuellen Programmblocks (in diesem Ausschnitt können Sie Code-Zeilen auswählen, und Unterbrechungspunkte setzen). Hierarchische Liste programmgesteuerter Objekte (ähnliche Funktionsweise wie im Object Navigator- Hauptfenster). Befehlszeilenbereich, in dem Sie PL/SQL und Debugger-Befehle eingeben. Führt den Befehl STEP INTO aus. Führt den Befehl STEP OVER aus. Führt den Befehl STEP OUT aus. Führt den Befehl GO aus. Führt den Befehl RESET aus. Beendet den Debugger. Oracle Developer: Form Builder I 14-9

Kapitel 14: Trigger - Fehlersuche (Debugging) Unterbrechungspunkte (Breakpoints) setzen Debug- Modus Form starten 2 1 14-8 Copyright Oracle Corporation, 1998. All rights reserved. 1 Trigger Auswählen 2 Unterbrechungspunkt setzen 14-10 Oracle Developer: Form Builder I

Trigger nach Fehlern durchsuchen Durch Auswahl von Help >Debug im Menü Runform können Sie den Debugger zu jedem beliebigen Zeitpunkt starten, während eine Form im Debug-Modus ausgeführt wird. Menüs und der Debugger Sobald die Steuerung an den Debugger übergeht, enthält das Hauptmenü die Optionen View, Debug und Navigator, jeweils mit zusätzlichen Untermenüs zur Steuerung des Debuggers. Unterbrechungspunkte in einem Trigger setzen Unterbrechungspunkte starten den Debugger während der Ausführung von Code, und Sie können - sobald bestimmte Stellen im Code erreicht sind - Trigger und andere Programmblöcke analysieren und interaktiv zugreifen darauf. Ein Unterbrechungspunkt startet den Debugger unmittelbar vor Ausführung der Zeile, in der der Unterbrechungspunkt gesetzt wurde. Sie können einen Unterbrechungspunkt auf zwei verschiedene Arten definieren. Methode 1 1 Wählen Sie den gewünschten Trigger im Navigator-Ausschnitt aus. Der Debugger zeigt die entsprechende Quelle im Quell-Ausschnitt an. 2 Doppelklicken Sie auf die Zeile im Quell-Ausschnitt, in der der Unterbrechungspunkt gesetzt werden soll. Sie können nun den Debugger beenden. Er wird erneut angezeigt, sobald während der Trigger- Ausführung die entsprechende Zeile erreicht ist. Methode 2 Andere Debug-Aktionen können alternativ wie folgt zugeordnet werden: 1 Wählen Sie den gewünschten Trigger aus, wie im ersten Schritt der Methode 1, und wählen Sie dann Debug >Break aus den Menüs. Damit wird der Dialog PL/SQL Breakpoint angezeigt. 2 Geben Sie im Trigger-Bereich des Dialogs Breakpoint folgendes ein: RAISE DEBUG.BREAK. Damit wird im Debug Package eine Ausnahme festgelegt, welche die Steuerung an den Debugger übergibt, sobald die Zeile anschließend während der Ausführung erreicht wird. Mit dieser Methode haben Sie im Dialog Breakpoint einen Unterbrechungspunkt-Trigger gesetzt, der immer dann ausgelöst wird, wenn im normalen Trigger der Unterbrechungspunkt erreicht wird. Hinweis: Unterbrechungspunkte müssen im Textteil des Codes einer ausführbaren Anweisung zugeordnet werden. Kommentarzeilen oder NULL-Befehle können für diesen Zweck nicht verwendet werden. Oracle Developer: Form Builder I 14-11

Kapitel 14: Trigger - Fehlersuche (Debugging) Unterbrechungspunkt- und Debug-Trigger Fire Debug- Trigger Jede Anweisung Anweisung Fire Breakpoint Anweisung Fire Anweisung Programmeinheit Breakpoint Trigger Debugger 14-9 Copyright Oracle Corporation, 1998. All rights reserved. Debug-Trigger 14-10 Copyright Oracle Corporation, 1998. All rights reserved. 14-12 Oracle Developer: Form Builder I

Trigger nach Fehlern durchsuchen Unterbrechungspunkt-Trigger und Debug-Trigger Möglicherweise möchten Sie Debug-Aktionen definieren, die automatisch eintreten, und zwar entweder an einem Unterbrechungspunkt oder wenn bestimmte Programmblöcke und Trigger ausgeführt werden. Debug- Aktionen definieren Sie folgendermaßen: Unterbrechungspunkt-Trigger: Ein Trigger, der an einem Unterbrechungspunkt ausgelöst wird und PL/SQL- und DEBUG- Funktionen und Prozeduren enthält. - Wählen Sie eine Code-Zeile aus dem Quell-Ausschnitt aus, in der ein Unterbrechungspunkt gesetzt werden soll. - Wählen Sie Debug >Break aus dem Menü, wodurch der Dialog Breakpoint angezeigt wird. - Geben Sie Ihren Debug-Code im Bereich Trigger ein, und klicken Sie dann auf OK. Debug-Trigger: Wie Unterbrechungspunkt-Trigger. Sie können Debug- Trigger so definieren, daß sie ausgelöst werden, sobald ein Unterbrechungspunkt auftritt. Debug-Trigger können jedoch einem Programmblock zugeordnet sein, oder bei Ausführung jeder Code-Zeile in diesem Programmblock ausgelöst werden. Hinweis: Debug-Trigger verursachen nur dann einen Unterbrechungspunkt, wenn Sie die Ausnahme DEBUG.BREAK festlegen. Andernfalls führen sie ihre Aktionen im Hintergrund aus. 1 Wählen Sie einen Programmblock oder eine Quellcode-Zeile im Debugger aus. 2 Wählen Sie Debug >Trigger aus dem Menü. Damit wird der Dialog PL/SQL Trigger aufgerufen. 3 Geben Sie Ihren Debug-Code im Bereich Trigger Body ein, und klicken Sie dann auf OK. Debug-Aktionen deaktivieren Um Debug-Aktionen für die Laufzeit zu deaktivieren, deaktivieren Sie das Kontrollkästchen Enabled im Dialog PL/SQL Trigger oder Breakpoint. Sie können diese Dialoge erneut anzeigen, indem Sie die gewünschte Debug- Aktion unter dem Knoten Debug Actions im Navigator suchen, und dann auf die Aktion doppelklicken, die Sie anzeigen möchten. Nach Auswahl der Aktion aus der Liste, können Sie über das Pop-up-Menü durch Klicken der rechten Maustaste die ausgewählte Aktion aktivieren oder deaktivieren. Oracle Developer: Form Builder I 14-13

Kapitel 14: Trigger - Fehlersuche (Debugging) Debug-Befehle Step over 1 Reset 2 Step into Step out GO 14-11 Copyright Oracle Corporation, 1998. All rights reserved. Ihr Trigger Code ist mitunter in dem einzelnen PL/SQL-Block verschachtelt, den Form Builder bereitstellt. 1 Trigger 2 Prozeduren 14-14 Oracle Developer: Form Builder I

Trigger nach Fehlern durchsuchen Nützliche Befehle im Debugger Sie können folgende Befehle im Interpreter-Ausschnitt eingeben. Zu denen, die mit einem Stern (*) markiert sind, gibt es auch eine entsprechende Werkzeugleisten-Schaltfläche:.STEP INTO* Setzt die Ausführung mit der nächsten Prozedur fort, die von dieser Zeile aufgerufen wird..step OVER* Führt die Prozedur aus, überspringt sie aber gleichzeitig; stoppt in der nächsten Zeile..STEP OUT* Setzt die Ausführung bis zum Ende der aktuellen Ebene fort (Prozedur)..GO* Setzt die Ausführung fort, ohne Endpunkt..RESET* Beendet die aktuelle Prozedur unmittelbar..show LOCALS Zeigt alle lokalen Variablen (lokal deklarierte PL/SQL-Variablen) und Parameter an. Die folgenden Prozeduren des DEBUG Package können auf der Befehlszeile des Debuggers (im Interpreter-Ausschnitt) eingegeben oder in die Debug- und Unterbrechungspunkt-Trigger eingefügt werden. Wenn Sie sie verwenden, können Sie Werte für Variablen und Parameter anzeigen und im aktuellen Trigger- oder Prozedur-Wirkungskreis festlegen: DEBUG.INTERPRET(Zeichenfolge) Eine Prozedur, mit der Sie einen Interpreter-Befehl (wie die oben angegebenen) als Zeichenfolge verschachteln und dann aus Debug-Triggern heraus ausführen können. DEBUG.GETx(varname) Eine Funktion, die den Wert der Variablen varname.(x repräsentiert den Datentyp (n steht für NUMBER, d für DATE, c für CHAR oder VARCHAR2, i für PLS_INTEGER).) DEBUG.SETx(varname,Wert) Eine Prozedur, die einen angegebenen Wert für eine Variable festlegt. (x repräsentiert den Datentyp (n steht für NUMBER, d für DATE, c für CHAR oder VARCHAR2, i für PLS_INTEGER).) Oracle Developer: Form Builder I 14-15

Kapitel 14: Trigger - Fehlersuche (Debugging) Debug-Beispiel Debug Example WHEN-BUTTON- PRESSED 1 The results are:?? ruft auf... 5 Prozedur XYZ; 2 Funktion ABC; 3 4 14-12 Copyright Oracle Corporation, 1998. All rights reserved. 14-16 Oracle Developer: Form Builder I

Debugger-Beispiel Debugger-Beispiel Folgend ein einfaches Beispiel, welches die Fehlerbehebung mit Hilfe des Debuggers veranschaulicht. Angenommen unsere Beispiel-Form besteht aus einer einzigen Schaltfläche mit Trigger-Code für das Ereignis When-Button- Pressed. Der Code funktioniert folgendermaßen: 1 Der Trigger ruft die Prozedur XYZ auf und übergibt einen Wert für die Parameter xyz_param (z. B. 100). 2 Die Prozedur XYZ ruft die Funktion ABC auf und übergibt den Wert 10 für die Parameter abc_param. PROCEDURE xyz (xzy_param IN NUMBER) IS v_results NUMBER; BEGIN v_results := ABC(10); v_results := v_results + xyz_param; MESSAGE( The results are: TO_CHAR(v_results)); 3 Die Funktion ABC multipliziert zwei Variablen (v_num3 und v_num6). Zu dem Ergebnis wird der Inhalt der Parameter abc_param addiert. 4 Die Funktion ABC liefert anschließend das Ergebnis an die Prozedur XYZ zurück. FUNCTION abc (abc_param IN NUMBER) RETURN NUMBER IS v_total NUMBER := 0; v_num3 NUMBER := 3; v_num6 NUMBER := 8; /*-- wrong value should be 6 */ BEGIN v_total := v_num3 * v_num6; v_total := v_total + abc_param; RETURN v_total; END abc; 5 Die Prozedur XYZ addiert das Ergebnis mit dem Parameter xyz_param und zeigt es in der Konsole an (im unteren Teil des Form-Fensters). Oracle Developer: Form Builder I 14-17

Kapitel 14: Trigger - Fehlersuche (Debugging) Debugger: Einen Unterbrechungspunkt setzen 14-13 Copyright Oracle Corporation, 1998. All rights reserved. 14-18 Oracle Developer: Form Builder I

Debugger-Beispiel Debugger: Einen Unterbrechungspunkt setzen In dem vorherigen Beispiel ist die Variable v_num6 versehentlich mit dem Wertt 8 (anstatt 6) initialisiert. Wenn Sie zur Laufzeit auf die Schaltfläche der vorherigen Beispiel-Form klicken, wird im unteren Bereich des Bildschirms das Ergebnis 134 angezeigt. Eigentlich haben Sie aber den Wert 128 erwartet. Die Syntax muß richtig sein, da alles erfolgreich kompiliert wurde. Das weist auf einen logischen Fehler der Applikationskodierung hin. Der Entwickler muß den Code mit Hilfe des Debuggers überprüfen. 1 Starten Sie die Form im Debug-Modus (nutzen Sie die Schaltfläche Run Form Debug). Finden Sie den Trigger When-Button-Pressed im Debugger. In dem Bereich Source Pane setzen Sie durch Doppelklick einen Unterbrechungspunkt auf die ausführbare Zeile, welche die Prozedur aufruft: 00001 BEGIN B (01) xxyz(100); -- B(01) indictaes the break 00003 END; 2 Schließen Sie den Debugger und die Form wird gestartet. 3 Klicken Sie auf die Schaltfläche der Beispiel-Form. Die Ausführung des Programmes wird an dem Unterbrechnungspunkt angehalten. Oracle Developer: Form Builder I 14-19

Kapitel 14: Trigger - Fehlersuche (Debugging) Debugger: Schrittweise Ausführung (Step Into) des Codes 14-14 Copyright Oracle Corporation, 1998. All rights reserved. 14-20 Oracle Developer: Form Builder I

Debugger: Schrittweise Ausführung des Codes Debugger: Schrittweise Ausführung des Codes 4 Die Prozedur XYZ wird im Quell-Abschnitt angezeigt, mit der Markierung => für die aktuelle Position am Anfang des ausführbaren Codes. 00001 BEGIN 5 Fahren Sie in der Prozedur XYZ fort, indem Sie auf die Schaltfläche Step Into klicken: 00001 PROCEDURE xyz (xyz_param IN NUMBER) IS v_results NUMBER; 00002 BEGIN =>003 v_results := ABC(10); 00004 v_results := v_results + xyz_param; 00005 MESSAGE( The results are: TO_CHAR(v_results)); 6 Betrachten Sie in dem Bereich Stack die Werte der Parameter xyz_param und v_results (als auch die Systemvariablen). Die Prozedur XYZ scheint korrekt. -Stack -[1] Procedure Body XYZ Line 3 - XYZ_PARAM (NUMBER) = 100 - V_RESULTS (NUMBER) = Oracle Developer: Form Builder I 14-21

Kapitel 14: Trigger - Fehlersuche (Debugging) Debugger: Variablen überprüfen 14-15 Copyright Oracle Corporation, 1998. All rights reserved. 14-22 Oracle Developer: Form Builder I

Debugger: Schrittweise Ausführung des Codes (Fortsetzung) Debugger: Schrittweise Ausführung des Codes (Fortsetzung) 7 Aktivieren Sie die Funktion ABC, indem Sie auf die Schaltfläche Step Into klicken. Führen Sie nun schrittweise jeden Zuweisungsbefehl aus. Sie erkennen das Problem im Code (v_num6 ist versehentlich auf 8 anstatt auf 6 gesetzt). 00001 FUNCTION abc (abc_param IN NUMBER) RETURN NUMBER IS 00002 v_total NUMBER := 0; 00003 v_num3 NUMBER := 3; =>004 v_num6 NUMBER :=8; 00005 /**-- wrong value should be 6 00006 */ 8 Überprüfen Sie die Stack-Werte der Variablen v_total, v_num3 und v_num6. -Stack -[2] Function Body ABC Line 3 - ABC_Param (NUMBER) = 10 - V_TOTAL (NUMBER) = - V_NUM3 (NUMBER) = - V_NUM6 (NUMBER) = Korrigieren Sie den Stack-Wert von v_num6. - V_NUM6 (NUMBER) = 6 9 Fahren Sie für die Ausführung der Funktion ABC fort, wobei Sie die Schaltfläche Step Into verwenden. Am Ende der Funktion ABC kehren Sie über die Schaltfläche Step Into in die Prozedur XYZ zurück. 00003 v_results := ABC(10) =>004 v_results := v_results + xyz_param; 00005 MESSAGE ( The results are: TO_CHAR(v_results)); Oracle Developer: Form Builder I 14-23

Kapitel 14: Trigger - Fehlersuche (Debugging) Korrigierter Code FUNCTION abc (abc_param IN NUMBER) RETURN NUMBER IS v_total NUMBER := 0; v_num3 NUMBER := 3; v_num6 NUMBER := 6; /*-- changed value to 6 */ BEGIN v_total := v_num3 * v_num6; v_total := v_total + abc_param; RETURN v_total; END abc; 14-16 Copyright Oracle Corporation, 1998. All rights reserved. 14-24 Oracle Developer: Form Builder I

Debugger: Änderung des Codes und erneute Ausführung Debugger: Änderung des Codes und erneute Ausführung 10 Im Form Builder öffnen Sie die Form ABC. Ändern Sie den Wert, den Sie der Variablen v_num6 zuweisen, von 8 auf 6. Führen Sie die Form erneut ohne den Debug-Modus aus. Das richtige Ergebnis wird angezeigt. FUNCTION abc (abc_param IN NUMBER) RETURN NUMBER IS v_total NUMBER := 0; v_num3 NUMBER := 3; v_num6 NUMBER := 6; /* Correct value is 6 */ BEGIN v_total := v_num3 * v_num6; v_total := v_total + abc_param; RETURN v_total; END abc; Oracle Developer: Form Builder I 14-25

Kapitel 14: Trigger - Fehlersuche (Debugging) Zusammenfassung Fehlerbehebung in einer Form: Nutzen Sie die Schaltfläche Run Form Debug und setzen Sie Unterbrechungspunkte. Debug-Befehle können in den Ausschnitt Interpreter eingegeben oder über Schaltflächen verwendet werden. Unterbrechungspunkte setzen, um den Debugger zu starten. Break- und Debug-Trigger sind verfügbar, um Debug-Aktionen für Ereignisse in der Form zu programmieren. 14-21 Copyright Oracle Corporation, 1998. All rights reserved. 14-26 Oracle Developer: Form Builder I

Zusammenfassung Zusammenfassung Um eine Form auf Fehler zu untersuchen und diese zu beheben (Debugging), gehen Sie folgendermaßen vor: - Verwenden Sie die Schaltfläche Run Form Debug (kompiliert und führt die Form automatisch aus). - setzen Sie Unterbrechungspunkte. Debug-Befehle können im Interpreter-Ausschnitt oder über Schaltflächen eingegeben werden. Setzen Sie Unterbrechungspunkte, um den Debugger aufzurufen. Unterbrechungs- und Debug-Trigger sind verfügbar, um Debug- Aktionen zu Ereignissen in der Form zu programmieren. Oracle Developer: Form Builder I 14-27

Kapitel 14: Trigger - Fehlersuche (Debugging) Übung 14 - Übersicht Debugger verwenden, um Probleme zur Laufzeit lösen zu können 14-17 Copyright Oracle Corporation, 1998. All rights reserved. 14-28 Oracle Developer: Form Builder I

Übungsteil - Übersicht: Kapitel 14 Übungsteil - Übersicht: Kapitel 14 In dieser Übung erstellen Sie eine generische Prozedur für die Werteliste (LOV) in der Form CUSTGxx, und Sie führen dieses Modul im Debug- Modus aus, und gehen schrittweise durch den Code, um dessen Fortschritt zu überwachen. Übungsinhalte Sie lösen mit Hilfe des Debuggers Probleme zur Laufzeit. Oracle Developer: Form Builder I 14-29

Kapitel 14: Trigger - Fehlersuche (Debugging) Übung 14 1 Öffnen Sie Ihre Datei CUSTGxx.FMB. In dieser Form erstellen Sie eine Prozedur namens List_Of_Values. Importieren Sie Code aus der Datei pr14_1.txt: PROCEDURE list_of_values(p_lov in VARCHAR2,p_text in VARCHAR2) IS v_lov BOOLEAN; BEGIN v_lov:= SHOW_LOV(p_lov); IF v_lov THEN MESSAGE('You have just selected a ' p_text); ELSE MESSAGE('You have just cancelled the List of Values'); END IF; END; Ändern Sie den Trigger When-Button-Pressed für die Schaltfläche CONTROL.Sales_LOV_Button, um diese Prozedur aufzurufen. When-Button-Pressed für CONTROL.Sales_Lov_Button LIST_OF_VALUES( SALES_REP_LOV, Sales Representative ); Kompilieren Sie Ihre Form und führen Sie sie im Debug-Modus aus. Setzen Sie einen Unterbrechungspunkt in einem Ihrer Trigger, und überprüfen Sie den Aufruf-Stapel (Call Stack). Versuchen Sie, schrittweise durch den Code zu gehen, um dessen Fortschritt zu überwachen. 14-30 Oracle Developer: Form Builder I