Friedrich-Alexander-Universität Erlangen-Nürnberg  /   Technische Fakultät  /   Department Informatik
output.h-Dateireferenz

Enthält Debugmakros, um Debugausgaben auf einen eigenen Screen umzuleiten. Mehr ...

Include-Abhängigkeitsdiagramm für output.h:
Dieser Graph zeigt, welche Datei direkt oder indirekt diese Datei enthält:

Makrodefinitionen

#define DBG_VERBOSE   nullstream
 Stream, welche nur im Verbose-Modus im Debugfenster angezeigt wird. Mehr ...
 
#define DBG   dout[System::getCPUID()]
 Ausgabestrom, welcher in dem der CPU zugeordneten Debugfenster angezeigt wird. Mehr ...
 

Variablen

CGA_Stream dout [CPU_MAX]
 Debugausgabefenster für die jede Zeigt Ausgaben zur Fehlersuche wie DBG << "var = " << var << endl in einem separaten Debugfenster für die entsprechende CPU an. Mehr ...
 

Ausführliche Beschreibung

Enthält Debugmakros, um Debugausgaben auf einen eigenen Screen umzuleiten.

Für den Uniprozessorfall reicht es ein CGA_Stream Objekt für Debugausgaben (dout) anzulegen.

Makro-Dokumentation

◆ DBG

#define DBG   dout[System::getCPUID()]

Ausgabestrom, welcher in dem der CPU zugeordneten Debugfenster angezeigt wird.

Während dies in OOStuBS nur ein Alias auf dout ist, muss in der Mehrprozessorvariante für jede CPU ein Objektarray für Debugausgaben mit dem Namen dout[] angelegt werden; die Auswahl erfolgt über System::getCPUID()

Warnung
Bei ungünstiger Einplanung ist es möglich, dass die Ausgabe im Mehrkernsystem auf der falschen (vorherigen) CPU geschieht.

◆ DBG_VERBOSE

#define DBG_VERBOSE   nullstream

Stream, welche nur im Verbose-Modus im Debugfenster angezeigt wird.

Zu beachten
Sofern eine serielle Konsole implementiert wurde, kann diese (durch Änderung des Makros) als Ausgabe verwendet werden - dadurch wird die ggf. sehr umfangreiche Ausgaben besser lesbar (Stichwort Scrollen)

Variablen-Dokumentation

◆ dout

Debugausgabefenster für die jede Zeigt Ausgaben zur Fehlersuche wie DBG << "var = " << var << endl in einem separaten Debugfenster für die entsprechende CPU an.

Während für OOStuBS nur ein Objekt dout angelegt werden muss, ist bei MPStuBS ein Objektarray mit einem Fenster je CPU notwendig – in diesem Fall kann die direkte Listeninitialisierung verwendet werden:

{0, 39, 17, 20}, // Debugfenster für CPU 1, quasi CGA_Stream(0, 39, 17, 20)
{40, 79, 17, 20}, // Debugfenster für CPU 2, quasi CGA_Stream(40, 79, 17, 20)
//...
};

Die Debugfenster sollen überschneidungsfrei unterhalb des normalen Ausgabefensters liegen und mindestens 3 Zeilen lang sein. Zwei Debugfenster können problemlos nebeneinander liegen.

Als Erweiterung kann man die Verteilung auch automatisch (nach Anzahl der CPUS) machen lassen, dann reicht der Standardkonstruktor (ohne Parameter) aus.