Programmierer Geflüster abhorchen

Debug Messages

Arbeitet ein Programm nicht korrekt oder stürzt es sogar ab, dann ist es oft mühsam dem Fehler auf die Schliche zu kommen. Deutlich einfacher wird die Fehlersuche, wenn das Programm über ein ausführliches Logging verfügt.

Leider trifft das aber oft nicht zu. In diesen Fällen können Debug Messages eine grosse Hilfe sein.

Debug Messages

Umfängliches Logging ist eine sehr aufwendige Geschichte. Grundlegende Parameter wie Art, Umfang und Speicherort des Loggings sollte der Benutzer zudem frei definieren können.

Gerade bei kleineren und systemnahen Tools scheuen viele Programmierer diesen hohen Aufwand.

Windows bietet daher Debug API Funktionen an die es ermöglich, mit minimalem Aufwand Meldungen an den Debugger zu schicken. Gerne greifen Programmierer auf diese Debug Messages zurück. Denn im Fehlerfall sind auch Programmierer auf ausführliche Informationen angewiesen.

Während der Programmierung werden die Debug Meldungen an die Entwickler Umgebung gesendet. Im Debugger Fenster kann der Programmierer dann beobachten, was das Programm grad so macht. Ist das Programm ausgeliefert, bleiben die Meldungen allerdings verborgen.

Debug View

Will man zur besseren Fehlersuche diese Meldungen wieder sichtbar machen, braucht man ein Programm das Debug Messages lesen kann. Microsoft bietet ein solches Programm kostenlos an. Ursprünglich wurde DebugView von Sysinternals entwickelt.

 Technet: DebugView

Die Bedienung ist prinzipiell sehr einfach. Programm starten und die Debug Meldungen der einzelnen Programme werden nacheinander eingesammelt.

debugview

Schickt ein Programm eine Debug Message, fängt sie der Viewer ein. Die Messages werden sequentiell angenommen, eine nach der anderen.

Welche Meldung zu welchem Programm gehört, erkennt man an der [PID] ( Prozess ID ) an. Welchem Prozess diese PID zugeordnet ist, zeigt uns der Taskmanager an.

Im DebugView lassen sich auch einige Optionen einstellen. Eine Beschreibung der Optionen finden sie in der ausfürliche Hilfe, die im Programm enthalten ist.

Fehlerhaftes Programm abhorchen:

  • DebugView starten.
  • Fehlerhaftes Programm starten. Hier ist es wichtig, die Debug Version des Programms zu wählen. Denn bei den meisten Release Versionen werden keine Debug Messages gesendet.
  • PID des Programms im Taskmanager nachsehen.
  • Im DebugView alle Meldungen dieser PID filtern und ansehen.

Sie können DebugView auch einfach einmal „so“ starten und werden wahrscheinlich staunen, wie viele Debug Meldungen der Viewer anzeigt.

Wie funktionieren Debug Messages ?

Die Message selbst liegt in einem „shared Memory“ Bereich. Dieser wird vom Sender beschrieben und vom Debugger / Viewer ausgelesen. Zusätzlich benötigt es noch etwas Synchronisation.

Sender:

  • Mutex öffnen.
  • „Shared Memory“ mappen, sofern vorhanden.
  • Auf das BUFFER_READY Signal warten. Dies wird vom Debugger gesetzt, sobald der Buffer verfügbar ist.
  • PID und Message in den Buffer kopieren. Insgesamt 4096 Bytes.
  • DATA_READY Event setzen, nun kann der Debugger die Message lesen.
  • Mutex und Events freigeben.

Debugger:

  • „Shared Memory“ anlegen und Events erzeugen.
  • BUFFER_READY setzen, nun kann der Sender den Buffer beschreiben.
  • Auf das DATA_READY Signal warten. Dies wird vom Sender gesetzt, sobald der Buffer beschrieben ist.
  • PID und Message aus dem Buffer lesen.
  • Nun wieder bei Punkt 2 weitermachen.
 blogs.msdn: A Debugging Approach to OutputDebugString

C++ Debug Messages

Die Ausgabe einer Debug Message ist in C++ sehr unkompliziert. Zumindest bis Ausgabe Formatierungen ins Spiel kommen.

 MSDN: OutputDebugString( ... )

Debug Version / Release Version:

Bei der Ausgabe wird nicht zwischen Debug oder Release Version unterschieden. In beiden Versionen wird die Debug Message ausgegeben. Will man die Meldung nur in der Debug Version, so muss man dies selbst handeln.

Debugger:

Wird das kompilierte Programm direkt im Debugger gestartet, so bindet das Debug Fenster die Ausgabe an sich. Ausserhalb des Debuggers, kann man die Debug Message auch im DebugView sehen.

Simples C++ Test Programm:

C# .net Debug Messages

Die Ausgabe einer Debug Message ist in C# .net recht komfortabel und unkompliziert.

 MSDN: Debug.WriteLine( ... )

Intern wird hier die OutputDebugString( … ) API Funktion verwendet.

Debug Version:

Debug Messages werden ausschliesslich in der Debug Version geschrieben.

Release Version:

In der Release Version hingegen, optimiert der Kompiler diese automatisch weg und es erscheinen daher keine Debug Messages.

Debugger:

Wird das Programm mit dem Visual C# Debugger gestartet, so erscheint die Message ausschliesslich im Debug Window. Ausserhalb des Debuggers kann man die Message auch im DebugView sehen.

Simples C# .net Test Programm:

Immer auf dem Laufenden !
Liken Sie uns jetzt auf Facebook
Keinen Artikel verpassen !
Folgen Sie uns jetzt auf Twitter

Fanden Sie den Artikel interessant ? Dann empfehlen Sie ihn doch gleich weiter !

Sagen Sie uns Ihre Meinung !

Happy new year 2016 !
Happy New Year 2016 !
Google Tips
Die besten Google Tipps, Hacks, Games und Easter Eggs !
Registry Quiz
Sind Sie ein Windows Registry Experte ?
Coder Myths
14 hartnäckige Programmier(er) Mythen und Irrtümer
Password Sünden / Password Sins
13 gefährliche Passwort Sünden
Passwort Generator / password generator
Online Passwort Generator
Password Hacker
Passwort Hacker – Wie kommen Hacker an Ihre Passwörter ?
Leet
Leet – die Hacker Sprache
Spy++ Title
Windows Fenster Spionage mit Spy++
Registry Quiz
Sind Sie ein Windows Registry Experte ?
Title ProcMon
Prozess Monitor – Programmen auf die Finger geschaut !
Windows Construct
Fenster im Eigenbau !
Coder Myths
14 hartnäckige Programmier(er) Mythen und Irrtümer
Windows Construct
Fenster im Eigenbau !
Debug Messages
Programmierer Geflüster abhorchen
Registry timestamp / Registry Zeitstempel
Registry Keys haben einen Zeitstempel ?!
Title ProcMon
Prozess Monitor – Programmen auf die Finger geschaut !
WMI Code Creator
WMI Code Creator – WMI ganz komfortabel
Environment Variables / Umgebungs Variablen
Windows konfigurieren mit Umgebungsvariablen
Passwort Generator / password generator
Online Passwort Generator