Buchempfehlung
Windows System Programming
Windows System Programming
Das Kompendium liefert viele interessante Informationen zur Windows-Programmierung auf Englisch. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Code-Beispiel

Code-Beispiele » Sonstiges

Debug-Info anzeigen

Lizenz:Erster Autor:Letzte Bearbeitung:
k. A.MitgliedLothar 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:

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 MitgliedLothar Schirm angelegt.
  • Die aktuellste Version wurde am 01.04.2011 von MitgliedLothar Schirm gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen