Code-Beispiel
Debug-Info anzeigen
Lizenz: | Erster Autor: | Letzte Bearbeitung: |
k. A. | Lothar Schirm | 01.04.2011 |
Bei der Fehlersuche kann man Debug-Informationen zum Beispiel anzeigen lassen, indem man Zeilen wie "LOCATE 1, 1: PRINT xyz: GETKEY" an geeigneten Stellen in den Code einfügt. Im allgemeinen wird dadurch der Bildschirmaufbau stark gestört. Die SUB DEBUG im nachfolgenden Programmbeispiel weist folgende Vorteile auf:
- Die Debug-Info kann in einer Zeile angezeigt werden, wo sie möglichst wenig stört (z.B. ganz unten oder ganz oben).
- Mehrere Anzeigen lassen sich so plazieren, dass die Anzeigen in einem farbigen Fenster erfolgen (Look and Feel wie bei QuickBASIC).
- Nach der Anzeige der DEBUG-Info kann gewählt werden, ob das Programm fortgesetzt oder beendet werden soll.
- Nach der Anzeige wird das Programm an der Bildschirmposition fortgesetzt, wo es vor der Anzeige der Debug-Info war.
Am besten plaziert man die SUB DEBUG mit der DECLARE-Anweisung in eine Include-Datei, die nur zu Testzwecken ins Programm eingebunden zu werden braucht. Ins Programm eingefügte DEBUG-Zeilen sind nach dem Testen leicht wiederzufinden und zu entfernen.
DECLARE SUB DEBUG(Zeile AS INTEGER, Text AS STRING, _
Variable AS STRING, Break AS INTEGER)
'Kleines Beispielprogramm:
DIM AS SINGLE x, y
SCREEN 0
COLOR 7, 1
CLS
PRINT "Tabelle der Quadratzahlen bis 20"
PRINT "x", "x^2"
FOR x = 0 TO 20
y = x^2
PRINT x, y
DEBUG 23, "x = ", STR(x), 0
DEBUG 24, "y = ", STR(y), 1
NEXT x
GETKEY
SUB DEBUG(Zeile AS INTEGER, Text AS STRING, _
Variable AS STRING, Break AS INTEGER)
' Prozedur zum Anzeigen von DEBUG-Information (beliebiger Text, Variable).
' Hierzu muss DEBUG <Parameterliste> unter die betreffende(n) Programmzeile(n)
' geschrieben werden.
' Parameter:
' - Zeile: Bildschirmzeile, in der die Anzeige erfolgen soll
' - Text: erläuternder auszugebender Text
' - Variable: Name der auszugebenden Variablen
' - Break = 1: Programm wird unterbrochen,
' Break = 0: Programm wird nicht unterbrochen
' Beispiel zum Anzeigen zweier Gleitkommazahlen x und y:
' DEBUG 1, "x = ", STR(x), 0
' DEBUG 2, "y = ", STR(y), 1
DIM AS INTEGER row, col, colr, fore, back, w, Laenge
DIM AS STRING*1 ky
' Aktuelle Zeile, Spalte und Farben des Programms retten:
row = CSRLIN
col = POS
colr = COLOR
fore = LOWORD(colr)
back = HIWORD(colr)
' Debug-Information weiss auf kobaltblau:
COLOR 15, 3
w = WIDTH
Laenge = LOWORD(w)
LOCATE Zeile, 1: PRINT SPACE(Laenge);
LOCATE Zeile, 1: PRINT Text; Variable;
' Programmunterbrechung:
IF Break THEN
LOCATE Zeile + 1, 1: PRINT SPACE(Laenge);
LOCATE Zeile + 1, 1: PRINT "<W>eiter <E>nde";
DO
ky = CHR(GETKEY)
LOOP UNTIL UCASE(ky) = "W" OR UCASE(ky) = "E"
SELECT CASE UCASE(ky)
CASE "W"
' Zurueck ins Programm:
COLOR fore, back
LOCATE row, col
CASE "E"
' Programm beenden:
END
END SELECT
ELSE
' Zurueck ins Programm:
COLOR fore, back
LOCATE row, col
END IF
END SUB
Alternativ kann man auch ein Macro zum Debuggen verwenden, siehe Beispiel in porticula:1252
Zusätzliche Informationen und Funktionen |
- Das Code-Beispiel wurde am 04.07.2007 von Lothar Schirm angelegt.
- Die aktuellste Version wurde am 01.04.2011 von Lothar Schirm gespeichert.
|
|