Borland C++Builder 2006

Verwaltung der Breakpoints

Doch nicht nur die Untersuchung von Ausdrücken ist einfacher und übersichtlicher geworden; das Gleiche gilt auch für die Verwaltung der Breakpoints. Am unteren Bildschirmrand befindet sich, wenn die IDE auf das Debug-Layout umgeschaltet hat, ein Meldungsfenster mit drei Tabs. Das erste nennt sich EREIGNISPROTOKOLL und gibt eine Übersicht über die Module, die geladen wurden. Das zweite ist interessanter. Es trägt den Titel LISTE DER HALTEPUNKTE und zeigt eben diese. Man sieht zu jedem Breakpoint die Position, wo er gesetzt wurde, sowie weitere Eigenschaften, wie etwa zu welcher Gruppe er gehört oder den Wert des Durchlaufzählers. Wenn man einen Eintrag doppelt anklickt, dann wird die entsprechende Zeile im Code-Editor angezeigt. Dadurch kann man sehr einfach an die jeweilige Position im Code springen, was insbesondere hilfreich ist, wenn man über viele Dateien hinweg navigieren muss. Jeder Breakpoint kann zudem ein- oder ausgeschaltet werden. Dieses geht in einer Liste natürlich schneller, als wenn man, wie es im C++Builder 6 nötig war, jedes Mal den Breakpoint direkt anklicken muss. Ein ausgeschalteter Breakpoint wird dabei nicht aus der Liste entfernt, sodass man ihn später wieder einschalten kann, ohne ihn an derselben Stelle erneut setzen zu müssen. Es besteht auch die Möglichkeit, per Knopfdruck alle Breakpoints gleichzeitig ein- oder auszuschalten bzw. zu löschen. Bei umfangreichen Projekten mit vielen Dateien ist diese Verwaltung eine große Hilfe.

Abb. 4: Die Breakpoint-Verwaltung

Ein weiterer Punkt, der zum Thema Debugging gehört und eine kleine Veränderung erfahren hat, ist CodeGuard. CodeGuard hilft beim Auffinden von Memory Leaks oder Fehlern in Zusammenhang mit Pointern (z.B. Überschreitung von Arraygrenzen, falsches Freigeben von Heap-Speicher), indem es nach Programmende entsprechende Meldungen erzeugt (oder gleich den Programmablauf unterbricht und die Meldungen ausgibt). Diese Meldungen werden jetzt automatisch in einem speziellen Fenster der IDE ausgegeben, sodass das explizite Sichtbarmachen des CodeGuard-Fensters entfällt.

Die Möglichkeit zum RemoteDebugging ist ebenfalls noch vorhanden. Beim C++Builder 6 war es dazu nötig, die Datei bordbg61.exe als Server auf der Host-Maschine zu starten (auf der zudem auch die DLL comp32b.dll vorhanden sein musste). Bei der neuen Version heißt die Datei rmtdbg100.exe, und neben den DLLs comp32x.dll und bccide.dll benötigt man noch die bordbk100.dll und bordbkN100.dll auf dem Host-Rechner, wobei die letzten beiden per regsvr32.exe auf diesem registriert werden müssen. Wenn man die rmtdbg100.exe dann im Listen-Modus startet, öffnet sich ein Konsolenfenster, welches den erfolgreichen Start bestätigt. Das weitere Vorgehen ist ähnlich wie in der Version 6: Statt, wie dort, die zu debuggende Anwendung per START | PARAMETER … aufzurufen, muss der Aufruf jetzt über START | PROZESS LADEN geschehen, wobei man über diesen Menüpunkt auch gleich festlegen kann, wo nach der Datei, die die Debug-Symbole enthält, gesucht werden soll. Der sich anschließende eigentliche RemoteDebug-Prozess ist identisch, dessen Einrichtung aber, wie beschrieben, etwas übersichtlicher gestaltet.

C++ Standard Library von Dinkumware, Ltd.

Die neue Version des C++Builders enthält auch eine andere Implementierung der Standard Library. Während es in der Vorgängerversion die Implementierung von STLport (Silicon Graphics) war, wobei eine RogueWave-Implementierung ebenfalls für ältere Projekte zur Verfügung stand, ist es jetzt die von Dinkumware. Nach deren Angaben ist diese Umsetzung die einzige, die vollkommen den Standard erfüllt, und zwar auch in den Erweiterungen, die er erfahren hat (zuletzt in einer Korrektur 2003). Die zuvor genannten Versionen von STLport und RogueWave erreichen Dinkumware zufolge nur eine Konformität von ca. 80 bis 90 Prozent. Inwieweit die hundertprozentige Standardkonformität ein Vorteil ist, ist schwer zu beurteilen. Es ist normalerweise wichtiger, wie performant und robust (und, bei den mathematischen Funktionen, wie präzise) eine Implementierung ist, und seltener, inwieweit sie den Standard erfüllt. Wenn man allerdings eine Funktion oder ein Makro benutzen will und diese dann nicht in der Implementierung enthalten sind, kann das natürlich ganz anders aussehen. Der Umstieg zur Dinkumware Library ist somit schon als Verbesserung zu betrachten, auch wenn man diese nicht unbedingt in jedem Projekt bemerken wird.

Build-Konfigurationen und -Ereignisse

Während der C++Builder 6 quasi nur zwei Build-Konfigurationen besaß (Debug und Endgültig), kann man jetzt beliebig viele Konfigurationen zusammenstellen. Standardmäßig sind die beiden genannten vorhanden, aber es können neue erzeugt oder existierende kopiert und dann verändert werden. Die Liste der Einstellmöglichkeiten ist sehr groß, jedoch übersichtlich angeordnet. Man kann in einer Baumstruktur den entsprechenden Punkt anwählen (z.B. bei den Compiler-Optionen die Sprachkompatibilität) und bekommt dann rechts daneben die Optionen angezeigt. Damit entfällt das Blättern durch die Tabs, auf denen in der Vorgängerversion die Optionen angezeigt wurden. Es sind bei einigen Punkten auch neue Optionen hinzugekommen.

Abb. 5: Verschiedene Build-Konfigurationen mit umfangreichen Optionen

Für jede Konfiguration wird im Projekt-Verzeichnis ein eigenes Unterverzeichnis angelegt, in dem dann die OBJ-Dateien oder auch TDS-Dateien sowie das endgültige Ausgabeprodukt (zum Beispiel eine EXE-Datei oder eine DLL) abgespeichert werden. Auf diese Weise wird auch auf Verzeichnisebene für mehr Übersichtlichkeit gesorgt. Zudem können so die Resultate mehrer Konfigurationen nebeneinander existieren, im Gegensatz zu früher, wo quasi immer nur das Resultat der zuletzt benutzen Konfiguration vorhanden war.

Des Weiteren kann man in den Build-Prozess über Ereignisse eingreifen. Wenn man in der Projektverwaltung eine Datei mit der rechten Maustaste anklickt, dann kann man unter BUILD-EREIGNISSE je nach Datei-Typ zwischen PRE-BUILD, POST-BUILD und PRE-LINK wählen. Daraufhin erscheint ein Dialogfeld, in dem man Kommandozeilenbefehle eingeben kann, die dann zum entsprechenden Zeitpunkt aufgerufen werden. Man kann so zum Beispiel eine Batch-Datei aufrufen, bevor mit dem Linken begonnen wird. Unterstützt wird man dabei durch zahlreiche Umgebungsvariablen, die unter anderem die Verzeichnisse und die Defines des Projekts enthalten. Der gesamte Build-Prozess ist somit für den Programmierer wesentlich flexibler in der Konfiguration geworden.

Zusammenfassung

Der C++Builder 2006 bietet natürlich noch einige weitere neue Features, aber die wichtigsten sind hier genannt worden. Es ist jedoch deutlich, wo man dieses Mal den Schwerpunkt beim C++Builder gesetzt hat. Dieser liegt klar bei der Erleichterung des alltäglichen Umgangs mit C++-Code. Insbesondere sind in diesem Zusammenhang die neuen Features des Code-Editors zu nennen, des Weiteren die des Debuggers bzw. Debug-Prozesses, aber auch die vollständige Integration von Borlands ALM-Untertützung, welche hier nicht beschrieben wurden und ebenfalls zu der Kategorie komfortablere Anwendungsentwicklung gehören. Die Erweiterung der VCL ist dafür etwas kleiner ausgefallen, was jedoch überhaupt nicht ins Gewicht fällt, da die zuvor genannten Punkte viel hilfreicher sind.

Abschließend bleibt festzustellen, dass man mit dem C++Builder 2006 eine IDE zur Verfügung hat, die die Erstellung von komplexen Anwendungen deutlich vereinfacht und in dieser Hinsicht heutigen Maßstäben gerecht wird. Es ist ein großer Sprung nach vorne vollzogen worden, und sollte man beim Refactoring und bei der Ausgabe von Fehlermeldungen während der Codeeingabe, wie man es bei Delphi bereits vorfindet, noch nachziehen, so braucht der C++Builder 2006 keine Konkurrenz zu fürchten. Aber auch jetzt schon stellt er ein ernorm wertvolles Hilfsmittel für C++-Entwickler unter Windows dar, und das aufgrund der Erweiterungen auch für solche Programmierer, die bereits Besitzer des C++Builder 6 sind.

Dr. Frank Gunzer ist freiberuflicher Software-Entwickler und Trainer. Er besitzt umfangreiche Projekterfahrung in den Sprachen C++ und Java. Desweiteren ist er als freier Systemberater für die Borland GmbH mit Schwerpunkt C++Builder tätig.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.