Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » SQL Anywhere-Debugger » Praktische Einführung: Erste Schritte mit dem Debugger

 

Lektion 2: Fehlerdiagnose

Diagnostizieren Sie die gespeicherte Prozedur debugger_tutorial, indem Sie Breakpoints setzen, den Code durchgehen und den Wert der Variablen überwachen, während die Prozedur ausgeführt wird.

Voraussetzungen

In dieser Lektion wird davon ausgegangen, dass Sie die Rollen und Privilegien haben, die im Abschnitt "Privilegien" am Anfang dieser praktischen Einführung aufgeführt sind: Praktische Einführung: Erste Schritte mit dem Debugger.

In dieser Lektion wird davon ausgegangen, dass Sie bereits alle vorherigen Lektionen abgeschlossen haben. Siehe Lektion 1: Debugger-Start und Fehlersuche.

 Aufgabe
  1. Suchen Sie im linken Fensterausschnitt auf der Registerkarte SQL nach debugger_tutorial (GROUPO) und der folgenden Anweisung:

    OPEN cursor_this_customer;
  2. Fügen Sie einen Breakpoint hinzu, indem Sie auf den senkrechten grauen Bereich links von der Anweisung klicken. Der Breakpoint wird als roter Kreis dargestellt.

  3. Rechtsklicken Sie im linken Fensterausschnitt auf Debugger_Tutorial (GROUPO) und klicken Sie auf Von Interactive SQL aus ausführen.

    Im rechten Fensterausschnitt von Sybase Central erscheint ein gelber Pfeil über dem Breakpoint.

  4. Klicken Sie im Fensterausschnitt Debugger-Details auf die Registerkarte Lokal, um eine Liste von lokalen Variablen in der Prozedur mit ihren aktuellen Werten und Datentypen anzuzeigen. Die Variablen Top_Company, Top_Value, This_Value und This_Company sind alle uninitialisiert und daher gleich NULL.

  5. Drücken Sie F11, um durch die Prozedur zu scrollen. Die Werte der Variablen ändern sich, wenn Sie die folgende Zeile erreichen:

    IF SQLSTATE = error_not_found THEN
  6. Drücken Sie erneut zweimal F11, um festzustellen, welche Verzweigung die Ausführung nimmt. Der gelbe Pfeil bewegt sich zurück zum folgenden Text:

    customer_loop: loop

    Die IF-Prüfung wurde nicht als TRUE zurückgegeben. Der Grund dafür ist, dass ein Vergleich eines beliebigen Wertes mit NULL immer NULL zurückgibt. Durch NULL ist die Bedingung nicht erfüllt und der Code innerhalb der Anweisung IF...END IF wird nicht ausgeführt.

    An dieser Stelle werden Sie möglicherweise bemerken, dass der Grund für das Problem darin liegt, dass Top_Value nicht initialisiert wurde.

  7. Prüfen Sie die Hypothese, dass das Problem durch die fehlende Initialisierung von Top_Value hervorgerufen wird, ohne den Code der Prozedur zu ändern.

    1. Im Fenster Debugger-Details klicken Sie auf die Registerkarte Lokal.

    2. Klicken Sie auf die Variable Top_Value, geben Sie 3000 in das Feld Wert ein und drücken Sie die Eingabetaste.

    3. Drücken Sie F11 solange, bis das Feld Wert der Variablen This_Value größer als 3000 ist.

    4. Klicken Sie auf den Breakpoint, sodass er grau wird.

    5. Drücken Sie F5, um die Prozedur auszuführen.

      Das Interactive SQL-Fenster wird angezeigt und zeigt die richtigen Ergebnisse:

      top_company top_value
      Chadwicks 8076
    6. Schließen Sie alle offenen Fenster von Interactive SQL.

Ergebnisse

Die Hypothese wurde bestätigt. Das Problem liegt darin, dass die Variable Top_Value nicht initialisiert ist.

Nächste Schritte

Gehen Sie weiter zu Lektion 3: Fehlerbehebung.

 Siehe auch