Das K Desktop Environment

12.2. KDE-Makros

Im Folgenden zitiere ich Kalle Dalheimers (kalle@kde.org) Erluterung zu den KDEBUG-Makros aus der mit dem KDElibs-Paket mitgelieferten Datei kdebug.html.

Letzte nderung am Samstag, 13. Sep 1997, 11:56:01 MESZ

Was ist KDebug?

KDebug ist eine Sammlung von Makros und Funktionen, die Diagnosemeldungen effizient in Ihren Code integrieren. Die Meldungen definieren sich ber vier verschiedene Schweregrade sowie einen Gltigkeitsbereich. Sie entscheiden zur Laufzeit, wo und welche Diagnosemeldungen ausgegeben werden. Wie wendet man KDebug nun an?

Das KDEBUG-Makro

KDebug lsst sich sehr einfach benutzen. Sie mssen dazu lediglich die Zeile &;include &;kdebug.h&; am Anfang jeder Quelltextdatei einfgen, in der Sie von Diagnosemeldungen Gebrauch machen wollen. Die Meldungen selbst erzeugen Sie, indem Sie das Makro KDEBUG aufrufen. Es erwartet drei Parameter. Der erste definiert den Schweregrad. Benutzen Sie dazu eine der folgenden Konstanten:

Der zweite Parameter gibt den Gltigkeitsbereich an, der einen von Ihnen definierten Teil von KDE umfasst. Zur Laufzeit legen Sie fest, welchen Bereich die Ausgaben betreffen sollen. In der Datei kdelibs/kdecore/kdebugareas.txt finden Sie eine Liste aller bislang vordefinierten Bereiche. Whlen Sie einen Gltigkeitsbereich, der Ihre Anwendung abdeckt. Falls Ihre Applikation nicht in der Liste zu finden ist, knnen Sie im CVS einen Bereich fr Ihre Anwendung festlegen, wenn Sie keinen CVS-Zugang haben, schreiben Sie mir einfach. In den meisten Fllen ist es sinnvoll, symbolische Konstanten fr die Bereiche zu definieren, die Sie nutzen wollen, aber das knnen Sie halten, wie Sie wollen.

Schlielich wre da noch der dritte Parameter, der Text, den Sie ausgeben wollen. Wenn Sie die Diagnosemeldungen in eine Datei, auf STDERR oder im Syslog mitprotokollieren, stellt KDebug ihnen den logischen Namen der Applikation voran. Ein Zeilenumbruch wird ebenfalls immer im Anschluss an die Meldung ausgegeben, sodass Sie das nicht von Hand tun mssen (und auch gar nicht sollen). Wenn Sie zustzliche Parameter bentigen, nutzen Sie eins der Makros KDEBUG1 bis KDEBUG9. Diese bieten Raum fr ein bis neun zustzliche Argumente. Die Syntax gleicht der von printf, d.h., Sie reichern Ihren Meldungstext mit den Formatangaben an, die zur Laufzeit durch die zustzlichen Parameter ersetzt werden. Ein Beispiel:

 KDEBUG3( idx/KDEBUG_INFO/, kmail_composer, "Message no. %d to %s has %d bytes",
           message_no, aMessage.to(), aMessage.length() );

KASSERT

Zudem gibt es noch die Makros KASSERT, KASSERT1, ..., KASSERT9, die genau wie Ihre KDEBUG-Gegenstcke wirken, mit einer Ausnahme: Als erstes Argument bentigen sie einen zustzlichen Booleschen Parameter. Die zugehrige Meldung wird nur dann ausgegeben, wenn dieser falsch ist. Beachten Sie dabei, dass Sie weder KDEBUG noch KASSERT verwenden drfen, bevor Sie Ihr KApplication-Objekt erzeugt haben. Und noch ein Weiteres: KDebug bietet keine Internationalisierungsmglichkeit, da es ausschlielich fr Entwickler gedacht ist. Wenn Sie Ihre Benutzer ber einen Fehlerfall (beispielsweise "Diese Datei ist nicht schreibbar.") informieren wollen, benutzen Sie bitte KMsgBox.

Compilerswitches

Fr KDebug bentigen Sie keinerlei Compilerswitches. Wenn Sie Ihre Software jedoch vertreiben wollen (dies trifft hauptschlich auf Distributoren zu, die .rpm-, .deb- o.. Pakete erstellen), sollten Sie sie mit dem -DNDEBUG-Switch kompilieren. Damit entfernen Sie smtlichen Debugging-Code aus Ihrer Anwendung und sorgt dafr, dass sie kleiner und schneller wird (und beispielsweise 256K weniger dedizierten Speicher verbraucht).

Diagnosemeldungen zur Laufzeit ein- und abschalten

In jeder KApplication knnen Sie mit der Tastenkombination Strg-Umschalt-F12 zu jeder Zeit Ctrl-Shift-F12 den Dialog "Debug-Einstellungen" aufrufen. Hier legen Sie fr jeden Schweregrad einzeln fest, was mit einer Diagnosemeldung dieser Ebene passiert. Folgende Einstellungen sind mglich:

Abgesehen davon knnen Sie auch die Checkbox "Abort on fatal errors" ankreuzen. In diesem Fall beendet sich die Anwendung mit SIGABRT, wenn sie eine Diagnosemeldung des Schweregrads "KDEBUG&;FATAL " ausgegeben hat.

Wenn Sie den Dialog mit OK beenden, werden Ihre Einstellungen sofort aktiv und im Konfigurationsfile der Anwendung gespeichert. Beachten Sie bitte, dass sich Ihre Einstellungen lediglich auf eine spezielle Applikation beziehen. Whlen Sie hingegen cancel, werden smtliche neuen Einstellungen verworfen und die alten wieder hergestellt.