# 12.2. Verwendung des internen Debuggers

## 12.2.1. Änderungen in den Baum- und Ausgabeansichten

Bei Verwendung des internen Debuggers werden den Baum- und Ausgabeansichten drei Tabs hinzugefügt.

### 12.2.1.1. In der Baumansicht

- VAR Tab : Eine Baumansicht der lokalen Variablen des aktuellen Stackframes. Es können auch Variablen der aufrufenden Funktion angezeigt werden. Außerdem enthält dieses TAb ein Watch Fenster. Dies ermöglicht es globale Variablen anzuzeigen; oder Sie wollen vielleicht nur eine lokale Variable anzeigen anstatt sie in einer langen Liste lokaler Variablen zu suchen.

### 12.2.1.2. In der Ausgabeansicht

- Breakpoint : Eine Liste der aktuell gesetzten Unterbrechungen und ihr aktueller Status.

- Framestack : Eine Liste der zur Zeit aufgerufenen Funktionen

- Disassemble : Eine Ansicht des Assemblercodes der aktuell ausgeführten Anweisung

## 12.2.2. Änderungen im Debugmenü und im Panel

### 12.2.2.1. Im Panel

Ihnen stehen zwei normale und zwei Dropdown-Knöpfe zur Verfügung, sobald Sie den Debugger starten.

### 12.2.2.2. Im Debugmenü

Wenn Sie den Debugger starten, werden die zehn Einträge zu Steuerung des Debuggers eingeschaltet.

Verfügbare Funktionen:

- Ausführen: Fortsetzen des Programmes von der aktuellen Stelle aus.

- Bis Cursor: Fortsetzen des Programmes bis zur aktuellen Cursorposition.

- Über Funktion: Ausführen einer Codezeile. Alle in dieser Zeile enthaltenen Funktionen werden ausgeführt.

- Über Maschinenanweisung: Ausführen einer Assemblerinstruktion wie oben.

- In Funktion: Ausführen einer Codezeile. Wenn erforderlich wird aber in die enthaltenen Funktionen verzweigt und diese werden angezeigt.

- In Maschinenanweisung: Ausführen einer Assemblerinstruktion wie oben.

- Aus Funktion: Ausführen bis zum Ende des aktuellen Stackframes (Funktion).

- Ansichten: Erlaubt verschieden Ansichten der Daten. Zur Zeit sind implementiert:

  1. Speicher

  2. Disassemblieren

  3. Register

  4. Bibliotheken

- Anhalten: Ausführung der Anwendung unterbrechen.

- Halt: Ausführung der Anwendung unterbrechen und Debugger beenden.

## 12.2.3. Details

### 12.2.3.1. Unterbrechungen

Unterbrechungen können auf Quellcodezeilen gesetzt werden (sog. Breakpoints), oder auch auf Variablen (sog. Watchpoints) . Beide Arten von Unterbrechung können jederzeit gesetzt werden, Watchpoints auf lokale Variablen sind jedoch nur im jeweiligen Gültigkeitsbereich von Bedeutung. Sinnvoller ist die Verwendung von Watchpoints für globale Variablen.

### 12.2.3.2. Setzen/Löschen von Unterbrechungen

Klicken Sie im Editor in der gewünschten Zeile den schmalen "Icon"-Rand auf der linken Seite des Quelltextes an, um eine Unterbrechung zu setzen. Nochmaliges Klicken entfernt die Unterbrechung wieder.

### 12.2.3.3. Alternative Manipulation der Unterbrechungen via Menü

Wenn Sie den Breakpoint entweder im Editor oder in der Breakpointliste mit der rechten Maustaste anklicken, öffnet sich ein Menü mit Optionen. Dort können Sie die Unterbrechung entfernen oder editieren, oder alle Unterbrechungen löschen.

### 12.2.3.4. Editieren von Unterbrechungen

Benutzen Sie das eben beschriebene Menü um Unterbrechungen zu editieren. Es enthält die folgenden Einträge:

1. Bedingung: Geben Sie eine Bedingung an, die erfüllt sein muß, damit gdb die Programmausführung unterbricht.

2. Ignoriere die nächsten: Wie oft der Code den Breakpoint passieren soll, bevor gdb die Programmausführung unterbricht.

3. Aktivieren: Wenn das Kontrollfeld aktiviert ist, hält gdb an dieser Stelle an, sonst wird der Breakpoint ignoriert.

### 12.2.3.5. Alle Breakpoints löschen

Entfernt alle Unterbrechungen für dieses Programm.

### 12.2.3.6. Setzen/Löschen von Watchpoints

Klicken Sie in der Variablenansicht mit der rechten Maustaste auf eine Variable. Es öffnet sich ein Popup Menü in dem Sie einen Watchpoint auf diese lokale Variable setzen können. Diese Funktionalität ist auf den Gültigkeitsbereich dieser Variablen eingeschränkt. Sobald der Gültigkeitsbereich verlassen werden soll, wird das Programm angehalten und der Watchpoint gelöscht.

WARNUNG: Dies ist als problematisch bekannt. Seien Sie also vorsichtig, wenn Sie Unterbrechungen auf lokale Variablen setzen.

Eine Unterbrechung kann auch gesetzt werden, indem Sie mit der rechten Maustaste auf eine vorher eingegebene Unterbrechung klicken und "Watchpoint umschalten" auswählen.

### 12.2.3.7. Setzen/Löschen von Watch Variablen

Am unteren Ende der Variablenansicht befindet sich das "Watch"-Feld in dem man den Variablennamen eingeben kann, den man sich in der Watchliste anzeigen lassen will. Geben Sie den Variablennamen gefolgt von &<;RETURN&>; ein oder klicken Sie auf "Hinzufügen" . Ein Klick mit der rechten Maustaste auf den Variablennamen in der Baumansicht öffnet ein Menü, in dem Sie die Variable wieder aus der Liste entfernen können.

Sie können eine Watchvariable auch eingeben, indem Sie mit der rechten Maustaste im Editorfenster auf den Variablennamen klicken. Dies öffnet ein Popoup Menü mit einem "Beobachten : Variablenname" Eintrag.

### 12.2.3.8. Ändern von Variablenwerten

Das ändern von Variablenwerten erfolgt mit Hilfe einer Watchvariablen. Wenn Sie eine Variable "test" haben, können Sie die Variable auf 5 setzen, indem Sie im Watch-Feld "test=5" eingeben und die Variable zur Liste hizufügen. Beachten Sie, daß "test" JEDESMAL auf 5 gesetzt wird, wenn das Programm an dieser Stelle angehalten wird. Sie sollten eine Variable deshalb wieder aus der Liste entfernen nachdem sie einmal gesetzt worden ist.