Debug Terminal

(Version 1.0.4)  
Download


Debug Terminal ist ein Tool zur Ausgabe von Meldungen ohne laufenden Debugger. Es besteht aus Packages für Delphi 5,7,10 und dem Debug Terminal Programm. Die Packages enthalten unter anderem die Unit „dbg.pas“, welche in die Uses Klausel des eigenen Programms aufgenommen werden muß. Die Unit implementiert die Klasse „TDebug“, die wiederum das Senden von Meldungen über diverse Methoden ermöglicht. Die Unit stellt eine globale Instanz der Klasse TDebug zur Verfügung. Der Aufruf einer Methode dieser Klasse hat keine nennenswerte Auswirkung auf das Timing des eigenen Programms, da die Meldung zunächst in ein Warteschlange gestellt wird, und die Methode sofort wieder zurückkehrt. Beim Aufruf der Methoden wird auch die logische Adresse des Aufrufs ermittelt und gespeichert. Die Delphi IDE bietet über „Laufzeitfehler suchen“ die Möglichkeit, unter Angabe dieser Adresse, direkt an die entsprechende Stelle im Quellcode zu springen. Weitere Informationen zu jeder Meldung sind Fortlaufende Nummer, Zeitstempel und Name der Sender-Klasse (sofern vorhanden). Meldungen  können in bis zu 32 Level gruppiert werden. Das Debug Terminal Programm empfängt alle Meldungen, stellt sie in einer Liste dar und  ermöglicht das Sortieren, Gruppieren, Filtern, Drucken und Speichern der Daten.

Das Debug Terminal Programm

 

 

Screenshots 

Screenshot 1
Screenshot 2 (Gruppierung)
Screenshot 3 (Filter)
Screenshot 4 (Drucken)
Screenshot 5 (Erweiterte Filterung)

 

Die Unit "dbg.pas"

Es reicht aus die Unit "dbg.pas" in die Uses-Klausel der eigenen Unit aufzunehmen, um auf die globale Instanz "Debug" zugreifen zu können. Die folgenden Eigenschaften und Prozeduren werden von TDebug veröffentlicht.

Eigenschaften

Filename:

Pfad und Dateiname zur Textdatei (siehe PrintFileEnabled)

PrintFileEnabled:

Meldungen werden in einer Textdatei gespeichert

PostTerminalEnabled:

Meldungen werden im Debug Terminal angezeigt

OutputDebugStringEnabled:

Meldungen werden per „OutputDebugString“ gesendet

DebugTerminalPresent:

DebugTerminal ist geöffnet. (nur lesen)

QueuedItems:

Anzahl Meldungen in der Warteschlange

 

Prozeduren

Assert

procedure Assert(Sender: TObject; Level: byte; const Condition: Boolean; const Msg: string);

Sendet den String "Msg" wenn die Bedingung "Condition" erfüllt ist.

Beispiel:
Debug.Assert(self,1,(Parent=nil),'Komponente hat keinen Parent');

Format

procedure Format(Sender: TObject; Level: byte; const AFormat: String; const Args: array of const);

Sendet einen String in einer bestimmten Formatierung. (siehe Format-Strings in der Online-Hilfe von Delphi)

Beispiel:
Debug.Format(nil,1,'%s %p',['Format',@self]);

Bool

procedure Bool(Sender: TObject; Level: byte; const Bool: boolean; const Msg: string);

Sendet den String "Msg" und den Status von "Bool" als Text.

Beispiel:
Debug.Bool(nil,1,true,'Test Bool');

Str

procedure Str(Sender: TObject; Level: byte; const Msg: string);

Sendet den String "Msg".

Beispiel:
Debug.Str(self,0,'Hallo String');

Float

procedure Float(Sender: TObject; Level: byte; const Float: single; const Msg: string);

Sendet den String "Msg" und den Fließkomma Wert als Text.

Beispiel:
Debug.Float(self,0,2.3456,'Hallo Float');

Ptr

procedure Ptr(Sender: TObject; Level: byte; Ptr: Pointer; const Msg: string);

Sendet den String "Msg" und die Adresse des Pointers als Text

Beispiel:
Debug.Ptr(self,0,@Button1,'Pointer');

Int

procedure Int(Sender: TObject; Level: byte; Int: Longint; const Msg: string);

Sendet den String "Msg" und einen Integer Wert als Text.

Beispiel:
Debug.Int(self,0,27645,'Integer');

Hex

procedure Hex(Sender: TObject; Level: byte; Int: Longint; const Msg: string);

Sendet den String "Msg" und einen Integer Wert in Hexadezimaler Darstellung

Beispiel:
Debug.Hex(self,0,27645,'Hex')

HexBuffer

procedure HexBuffer(Sender: TObject; Level: byte; const Buffer; BufLen: Cardinal; const Msg: string);

Sendet den String "Msg" und die Daten von Buffer in Hexadezimaler Darstellung

Beispiel:
var a: array[0..5] of byte;
begin
a[0]:=4;
a[1]:=3;
a[2]:=2;
a[3]:=1;
a[4]:=0;
Debug.HexBuffer(self,0,a[0],5,'HexBuffer');
end;

Exception

procedure Exception(Sender: TObject; E:Exception);

Sendet den Exception Text des Exceptionsobjekts

Beispiel:
try
StrToInt('Hallo Welt');
except
on E:Exception do
Debug.Exception(self,e);
end;

Download

Debug Terminal steht hier als Setup zum Download bereit. Das Setup beinhaltet das Programm, Packages für Delphi5, Delphi7 und Delphi2006, und erledigt die Registirierung der Packages in der entsprechenden IDE.

Programm und Packages sind Freeware und dürfen frei genutzt und verteilt werden, sofern alle Bestandteile unverändert bleiben.

Feedback ist willkommen. Viel Spaß!

Historie

23.04.2006: Die erste Version zur freien Verfügung (1.0.2)

20.05.2006: Version  1.0.3

Debug Terminal:
- Neue Toolbar in modernem Design und mit den üblichen Funktionen zur  Anpassung.
- Das allgemeine Design ist jetzt im Windows XP Style
- Druckmodul hinzugefügt
- About Dialog hinzugefügt
- Ignore-Liste wird jetzt auch beim Empfang der Meldungen berücksichtigt
Bibliotheken:
-Meldungen werden jetzt in eine Warteschlange gestellt und von dort an das Debug Terminal gesendet.
 Das Timing der eigenen Anwendung wird dadurch nur minimal belastet, da die Funktion sofort (< 3ms) zurückkehrt.
-Neue Eigenschaft OutputDebugStringEnabled. Meldungen werden in diesem Fall auch per „OutputDebugString“ gesendet.
-Neue Eigenschaft QueuedItems gibt die Anzahl der Meldungen in der Warteschlange aus.
Setup:
-Der Suchpfad zu den BPL Dateien wird jetzt nur noch ergänzt, wenn dies zuvor noch nicht geschehen ist.
-Checkbox für „Verknüpfungen erzeugen“ ist jetzt nur noch sichtbar, wenn Debug Terminal ausgewählt wurde.

 

30.06.2006: Version  1.0.4

Debug Terminal:
- Detailfenster anzeigen aus Toolbar entfernt. Das Detailfenster kann mittels Slider ein- bzw. ausgeblendet werden.
- Die Breite einer bestimmten Spalte kann jetzt über das Kontext Menü optimiert werden.
- Toolbars Parameter und Info sind jetzt zu einer Toolbar zusammengeführt.
- Neue Toolbar und Kontext Menüs zur Verwaltung von Bookmarks hinzugefügt.
   Beliebige Zeilen in der Tabelle können mit einem Bookmark belegt werden.
   Die Tastenkombination STRG+Shift+0..9 setzt bzw. entfernt ein Bookmark, STRG+0..9 springt zur entsprechenden Zeile.
- Neue Ignore-Liste für Sender Namen hinzugefügt.