Debug
TerminalDebug 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.

Screenshot 1
Screenshot
2 (Gruppierung)
Screenshot 3 (Filter)
Screenshot 4 (Drucken)
Screenshot 5 (Erweiterte Filterung)
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.
|
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 |
|
Assert |
procedure Assert(Sender: TObject;
Level: byte; const Condition: Boolean; const Msg: string); Beispiel: |
|
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: |
|
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: |
|
Str |
procedure Str(Sender: TObject;
Level: byte; const Msg: string); Sendet den String "Msg". Beispiel: |
|
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: |
|
Ptr |
procedure Ptr(Sender: TObject;
Level: byte; Ptr: Pointer; const Msg: string); Sendet den String "Msg" und die Adresse des Pointers als Text Beispiel: |
|
Int |
procedure Int(Sender: TObject;
Level: byte; Int: Longint; const Msg: string); Sendet den String "Msg" und einen Integer Wert als Text. Beispiel: |
|
Hex |
procedure Hex(Sender: TObject;
Level: byte; Int: Longint; const Msg: string); Sendet den String "Msg" und einen Integer Wert in Hexadezimaler Darstellung Beispiel: |
|
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: |
|
Exception |
procedure Exception(Sender:
TObject; E:Exception); Sendet den Exception Text des Exceptionsobjekts Beispiel: |
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ß!
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.