Table of Contents

  1. Debugging eines C-Projekts mit Eclipse
    1. Allgemeines
    2. Erstellen des Projekts für den Debugger
    3. Starten des Programms im Debugger
    4. Debug-Perspektive
    5. Einfügen/Entfernen von Haltepunkten
    6. Beenden der Debug-Sitzung

Debugging eines C-Projekts mit Eclipse

Allgemeines

Eine integrierte Entwicklungsumgebung (IDE) wie Eclipse unterstützt den Programmierer auch in der Behebung von Programmfehlern.
Solche Programmfehler, die meist auf fehlerhafter oder unzureichender Umsetzung eines Algorithmus beruhen, werden Bugs (=Käfer, Wanze) genannt.
Um solchen Problemen auf die Schliche zu kommen wird ein Debugger genutzt.

Eclipse verwendet den GNU Debugger (gdb) und bietet dem Entwickler mithilfe der grafischen Umgebung eine bequeme Art die Möglichkeiten des Debuggers zu nutzen. Diese sind u. a.:

Erstellen des Projekts für den Debugger

Ein C-Projekt unter Eclipse kennt standardmäßig zwei Konfigurationen.

Diese Konfiguration wird für den Entwicklungsprozess verwendet und führt Debuginformationen (z. B. Variablennamen) in die Ausgabedateien (Objektdateien, Bibliotheken, ausführbare Dateien) des Erstellprozesses mit.
Diese sind für den Debugger notwendig um das Programm auf Quellcodeebene durchlaufen und geeignet darstellen zu können.
* Release
Diese Konfiguration aktiviert den Optimierungsmodus beim Erstellen der ausführbaren Datei.
Im resultierenden Programm befinden sich keine Debuginformationen und oft werden auch einige Laufzeitoptimierungen beim Erstellen durchgeführt.
Das daraus resultierende Programm wird als "Release"-Version (Version zur Veröffentlichung) bezeichnet.
Für die weitere Betrachtung des Debuggers wird also angenommen, dass das Projekt in der Debugkonfiguration erstellt wurde.
Beim Anlegen des Projekts ist die Debug-Konfiguration als Standardkonfiguration voreingestellt.
debug-build.png

Starten des Programms im Debugger

Zum Starten des aktuelle Projekt im Debugger wählen Sie zuerst



(alternativ dazu können Sie auch im Menü Run -> Debug wählen)
debug-start2.png


Sie werden als nächstes gefragt, ob Sie dem Perspektivenwechsel in die Debug-Perspektive zustimmen.
Bestätigen Sie die Dialogbox mit Yes.

Debug-Perspektive

Folgende Fensteraufbau finden Sie in der Debug-Perspektive:
debug-perspective.png


Hier wird angezeigt wie viele Instanzen des Entwicklungsprojekt (mit und ohne Debugger) gestartet wurden und in welchem Zusatnd diese augenblicklich sind.
ACHTUNG: Solange eine Instanz des Projekts noch läuft wird ein neues Erstellen (Rebuild) nicht mehr korrekt abgeschlossen, da die ausführbare Datei (EXE-Datei bzw. Linux-Binary) nicht überschrieben werden darf, solange sie noch läuft.


Er zeigt den aktuellen Inhalt der lokalen Variablen an.

Dieser Teil zeigt an, wo das Programm angehalten wurde (grüner Balken) und ermöglicht das Einsetzen und Entfernen von Haltepunkten.

Hierin werden die Standardeingabe, -ausgabe und -fehlerausgabe des Projekts umgeleitet.
ACHTUNG: Bei der Umleitung handelt es sich um eine schwerwiegende Schwachstelle von Eclipse, denn sie arbeitet leider nicht richtig.
Die Ein- bzw. Ausgabe erfolgt nicht synchron zur Abarbeitung des entsprechenden Funktionsaufrufes (z. B. scanf(), printf(), putchar()).
Unter Windows ist eine Umleitung der Ein-/Ausgabe in ein echtes Konsolenfenster möglich.
Hier finden Sie eine Beschreibung zur Umleitung der Ein-/Ausgabe.

Die Werkzeugleiste wird in dieser Perspektive um wesentliche Debug-Befehle erweitert.
Sie können die Befehle auch über den Menüpunkt Run auswählen.
debug-toolbar.png

(1) Resume (Abkürzungstaste: F8)
Wiederaufnahme des Programmlaufs bis zum Ende oder bis zum Auftreten eines Haltepunktes.

(2) Terminate (Abkürzungstaste: Ctrl-F2)
Beenden der Debugsitzung für die aktuelle Instanz.

(3) Step Into (Abkürzungstaste: F5)
Führe die aktuelle Anweisung (grüner Balken) aus. Sollte die Anweisung einen Funktionsaufruf darstellen dann springe in die Funktion.

(4) Step Over (Abkürzungstaste: F6)
Führe die aktuelle Anweisung (grüner Balken) aus. Springe zur nächsten Anweisung des aktuell dargestellten Quellcodes.

Einfügen/Entfernen von Haltepunkten

Das Einfügen von Haltepunkten erfolgt entweder durch
Doppelklick links von der entsprechenden Quellcodezeile
debug-breakpoint1.png
oder durch Selektieren der Quellcodezeile und Drücken der Tastenkombination <Ctrl-Shift-B>

Beenden der Debug-Sitzung

Zum Beenden der Debug-Sitzung beenden Sie zuerst alle noch laufenden (bzw. angehaltenen) Instanzen (1) und schalten zurück in die C/C++-Entwicklungsperspektive (2).
debug-end-session.png