Das KDevelop-Programmierhandbuch: Leitfaden zur C++-Anwendungsentwicklung für das K Desktop Environment (KDE) mit Hilfe der KDevelop-IDE in der Version 1.2
Zurück | Kapitel 12. Fehler finden | Vor

# 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:

- KDEBUG&_;INFO

- KDEBUG&_;WARN

- KDEBUG&_;ERROR

- KDEBUG&_;FATAL

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:

- Output: In dieser Kombobox bestimmen Sie, ob und wohin Meldungen ausgegeben werden. Möglich sind: "File", "Message Box", "Shell" (also STDERR) und "syslog". Bitte dirigieren Sie FATAL-Meldungen nur dann ins Syslog, wenn Sie tatsächlich der Systemadministrator der betreffenden Maschine sind. Voreingestellt ist "Message Box".

- File: Ein Eintrag hier ist lediglich dann sinnvoll, wenn Sie "File" als Ausgabemedium eingestellt haben. Dann geben Sie an dieser Stelle den Namen der Datei (relativ zum aktuellen Verzeichnis) an. Voreingestellt ist kdebug.dbg.

- Area: Die Gültigkeitsbereiche, deren Meldungen ausgegeben werden sollen. Alle hier nicht aufgeführten Bereiche werden schlicht und einfach nicht berücksichtigt -- es sei denn, das Feld bleibt wie voreingestellt leer. Das hat zur Folge, dass alle Meldungen ausgegeben werden. Die Bereiche werden durch Kommata voneinander getrennt, es sind aber auch Von-Bis-Angaben möglich, die Sie in der Form Anfang-Ende angeben. Ein gültiger Eintrag wäre: 117,214-289,356-359,221. Achten Sie darauf, keine Leerzeichen zu verwenden.

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.

Zurück | Anfang | Vor
Fehler finden | Hoch | Der KDE-Dateisystemstandard