Das K Desktop Environment

12.2. KDE-Makros

Im Folgenden zitiere ich Kalle Dalheimers (kalle@kde.org) Erläuterung 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 Gültigkeitsbereich. Sie entscheiden zur Laufzeit, wo und welche Diagnosemeldungen ausgegeben werden. Wie wendet man KDebug nun an?

Das KDEBUG-Makro

KDebug lässt sich sehr einfach benutzen. Sie müssen dazu lediglich die Zeile &#;include &<;kdebug.h&>; am Anfang jeder Quelltextdatei einfügen, 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 Gültigkeitsbereich 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. Wählen Sie einen Gültigkeitsbereich, der Ihre Anwendung abdeckt. Falls Ihre Applikation nicht in der Liste zu finden ist, können Sie im CVS einen Bereich für Ihre Anwendung festlegen, wenn Sie keinen CVS-Zugang haben, schreiben Sie mir einfach. In den meisten Fällen ist es sinnvoll, symbolische Konstanten für die Bereiche zu definieren, die Sie nutzen wollen, aber das können Sie halten, wie Sie wollen.

Schließlich wäre 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 müssen (und auch gar nicht sollen). Wenn Sie zusätzliche Parameter benötigen, nutzen Sie eins der Makros KDEBUG1 bis KDEBUG9. Diese bieten Raum für ein bis neun zusätzliche Argumente. Die Syntax gleicht der von printf, d.h., Sie reichern Ihren Meldungstext mit den Formatangaben an, die zur Laufzeit durch die zusätzlichen 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-Gegenstücke wirken, mit einer Ausnahme: Als erstes Argument benötigen sie einen zusätzlichen Booleschen Parameter. Die zugehörige Meldung wird nur dann ausgegeben, wenn dieser falsch ist. Beachten Sie dabei, dass Sie weder KDEBUG noch KASSERT verwenden dürfen, bevor Sie Ihr KApplication-Objekt erzeugt haben. Und noch ein Weiteres: KDebug bietet keine Internationalisierungsmöglichkeit, da es ausschließlich für Entwickler gedacht ist. Wenn Sie Ihre Benutzer über einen Fehlerfall (beispielsweise "Diese Datei ist nicht schreibbar.") informieren wollen, benutzen Sie bitte KMsgBox.

Compilerswitches

Für KDebug benötigen Sie keinerlei Compilerswitches. Wenn Sie Ihre Software jedoch vertreiben wollen (dies trifft hauptsächlich auf Distributoren zu, die .rpm-, .deb- o.ä. Pakete erstellen), sollten Sie sie mit dem -DNDEBUG-Switch kompilieren. Damit entfernen Sie sämtlichen Debugging-Code aus Ihrer Anwendung und sorgt dafür, dass sie kleiner und schneller wird (und beispielsweise 256K weniger dedizierten Speicher verbraucht).

Diagnosemeldungen zur Laufzeit ein- und abschalten

In jeder KApplication können Sie mit der Tastenkombination Strg-Umschalt-F12 zu jeder Zeit Ctrl-Shift-F12 den Dialog "Debug-Einstellungen" aufrufen. Hier legen Sie für jeden Schweregrad einzeln fest, was mit einer Diagnosemeldung dieser Ebene passiert. Folgende Einstellungen sind möglich:

Abgesehen davon können 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. Wählen Sie hingegen cancel, werden sämtliche neuen Einstellungen verworfen und die alten wieder hergestellt.