Debuggen mit GDB (Gnu DeBugger) unter Eclipse



Ähnliche Dokumente
Starten Sie Eclipse: Hier tragen sie Ihr Arbeitsverzeichnis ein. Zu Hause z.b. c:\workspace.

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Java-Tutorium WS 09/10

Zwischenablage (Bilder, Texte,...)

Lieferschein Dorfstrasse 143 CH Kilchberg Telefon 01 / Telefax 01 / info@hp-engineering.com

1 Einleitung. Lernziele. automatische Antworten bei Abwesenheit senden. Einstellungen für automatische Antworten Lerndauer. 4 Minuten.

Schrittweise Anleitung zur Erstellung einer Angebotseite 1. In Ihrem Dashboard klicken Sie auf Neu anlegen, um eine neue Seite zu erstellen.

AutoCAD Dienstprogramm zur Lizenzübertragung

Zählen von Objekten einer bestimmten Klasse

Enigmail Konfiguration

Anwendungsbeispiele Buchhaltung

Kontakte Dorfstrasse 143 CH Kilchberg Telefon 01 / Telefax 01 / info@hp-engineering.com

teamsync Kurzanleitung

Programme im Griff Was bringt Ihnen dieses Kapitel?

Internationales Altkatholisches Laienforum

Abwesenheitsnotiz im Exchange Server 2010

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Handbuch für Redakteure

2. Im Admin Bereich drücken Sie bitte auf den roten Button Webseite bearbeiten, sodass Sie in den Bearbeitungsbereich Ihrer Homepage gelangen.

Lehrer: Einschreibemethoden

Punkt 1 bis 11: -Anmeldung bei Schlecker und 1-8 -Herunterladen der Software

ARCO Software - Anleitung zur Umstellung der MWSt

Erstellen von x-y-diagrammen in OpenOffice.calc

1. Einführung Erstellung einer Teillieferung Erstellung einer Teilrechnung 6

Anleitung zum Öffnen meiner Fotoalben bei web.de

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Der neue persönliche Bereich/die CommSy-Leiste

Einführung zum Arbeiten mit Microsoft Visual C Express Edition

Der neue Mitgliederbereich auf der Homepage des DARC e. V.

Windows 7 Ordner und Dateien in die Taskleiste einfügen

HANDBUCH PHOENIX II - DOKUMENTENVERWALTUNG

2. Im Admin Bereich drücken Sie bitte auf den Button Mediathek unter der Rubrik Erweiterungen.

Dokumentation IBIS Monitor

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Biogena IMK. Individuelle Mikronährstoff Komponenten. Benutzerhandbuch. Natürlich so individuell wie Ihr Patient

FH-SY Chapter Version 3 - FH-SY.NET - FAQ -

II. Daten sichern und wiederherstellen 1. Daten sichern

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden.

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

2. Im Admin Bereich drücken Sie bitte auf den roten Button Webseite bearbeiten, sodass Sie in den Bearbeitungsbereich Ihrer Homepage gelangen.

Installation der Eicon Diva PCI Karte unter Windows XP

CodeSaver. Vorwort. Seite 1 von 6

Fotogalerie mit PWGallery in Joomla (3.4.0) erstellen

iphone- und ipad-praxis: Kalender optimal synchronisieren

Auf der linken Seite wählen Sie nun den Punkt Personen bearbeiten.

Persönliches Adressbuch

Fallbeispiel: Eintragen einer Behandlung

Wie Sie mit Mastern arbeiten

Wie halte ich Ordnung auf meiner Festplatte?

Handbuch. NAFI Online-Spezial. Kunden- / Datenverwaltung. 1. Auflage. (Stand: )

Erweiterungen Webportal

Handbuch für Redakteure

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Einzel- s und unpersönliche Massen-Mails versenden

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

TESTEN SIE IHR KÖNNEN UND GEWINNEN SIE!

Registrierung für eine Senioren IPIN Ab 17. Mai 2011 können sich Spieler für eine Senioren IPIN (Lizenz) registrieren.

Bei der Anlage von Pauschalen ist folgendes zu beachten!!!!!!!!

Erstellen einer digitalen Signatur für Adobe-Formulare

1. Aktionen-Palette durch "Fenster /Aktionen ALT+F9" öffnen. 2. Anlegen eines neuen Set über "Neues Set..." (über das kleine Dreieck zu erreichen)

Geld Verdienen im Internet leicht gemacht

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Ihre Lizenz ändern. Stand 01/2015

ASA Schnittstelle zu Endian Firewall Hotspot aktivieren. Konfiguration ASA jhotel

DELFI. Benutzeranleitung Dateiversand für unsere Kunden. Grontmij GmbH. Postfach Bremen. Friedrich-Mißler-Straße Bremen

Firefox installieren und einrichten Die wichtigsten Einstellungen in 15 Minuten

Satzhilfen Publisher Seite Einrichten

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

AUSBILDUNG eines OBEDIENCE HUNDES

Funktionsbeschreibung Website-Generator

Professionelle Seminare im Bereich MS-Office

Handbuch für Redakteure

104 WebUntis -Dokumentation

Integrated Services Realtime Remote Network

Inhaltsverzeichnis. Vergabe von Funktionen... 3 Vergeben einer Funktion...4 Vergebene Funktionen entziehen oder Berechtigungszeitraum festlegen...

Anleitung Postfachsystem Inhalt

Wie melde ich meinen Verein bei BOOKANDPLAY an?

inviu routes Installation und Erstellung einer ENAiKOON id

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager

Dateimanagement in Moodle Eine Schritt-für

Fraunhofer FOKUS ADPSW-INSTALLATION. Abiturdaten-Prüfsoftware. Version 3.0.1, 7. Mai 2013 FRAUNHOFER-INSTITUT FÜR OFFENE KOMMUNIKATIONSSYSTEME FOKUS

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

ecaros2 - Accountmanager

TYPO3 Tipps und Tricks

Wenn nicht alle alles mitbekommen sollen: Surfspuren vollständig beseitigen

Stammdatenanlage über den Einrichtungsassistenten

Gezielt über Folien hinweg springen

Bereich METIS (Texte im Internet) Zählmarkenrecherche

Informatik Kurs Simulation. Hilfe für den Consideo Modeler

Bedienungshinweise für das Smartboard. Basisfunktionen

Windows. Workshop Internet-Explorer: Arbeiten mit Favoriten, Teil 1

1. Melden Sie sich als Administrator an und wechseln Sie zum Desktop

BILDER TEILEN MIT DROPBOX

ONLINE-Mensa auf

Aktivierung von Makros in den Erfassungshilfen

Anleitung zur Verwendung der VVW-Word-Vorlagen

Anton Ochsenkühn. amac BUCH VERLAG. Ecxel für Mac. amac-buch Verlag

Anleitung über den Umgang mit Schildern

Pfötchenhoffung e.v. Tier Manager

Transkript:

Debuggen mit GDB (Gnu DeBugger) unter Eclipse Boris Budweg, 16.11.2009 Version 0.4 Abstract: Kleine Einführung in die Bedienung des GDB über Eclipse und die Möglichkeiten eines Debuggers. Viele Screenshots und Hinweise auf weiterführende Informationen sollen die Neugier wecken. Erste Schritte... 2 Debug-Konfiguration anlegen und Debugger starten... 2 Orientierung in der Debug-Perspektive... 5 Erster Lauf... 6 Fortgeschrittene... 8 View: Breakpoints... 8 View: Disassembly... 9 View: Registers... 11 Callstack, Springen in/aus Funktionen... 12

Erste Schritte Debug-Konfiguration anlegen und Debugger starten Nachdem ein Projekt erstellt wurde, dieses vollständig (ohne Fehler) gebaut wurde, ist es möglich, mit Hilfe eines Debuggers dem Ablauf des Programms zuzusehen und einzugreifen. Für dieses Beispiel wird folgendes Programm verwendet: #include "stdio.h" #include"math.h" void main() { float zahl; printf("zahl eingeben:"); scanf("%f", &zahl); } if (zahl < 0) { printf("berechnung nicht möglich\n"); } else { printf("quadratwurzel ist %f\n", sqrt(zahl) ); } Klicken Sie auf den kleinen Pfeil neben dem Käfer und selektieren Sie Debug Configurations : In dem neuen Fester selektieren Sie zunächst C/C++ Application, dann Neu (das leere Blatt mit dem + links darüber): 2

Es wird eine neue Debug-Konfiguration erstellt, die üblicherweise schon die korrekten Voreinstellungen hat: Nach einem Klick auf Debug geht s los! Diese Konfiguration müssen Sie 1x pro Projekt anlegen, dannach können Sie das Projekt immer debuggen, indem Sie direkt nach dem Käfer- Pfeil auf die gewünschte Konfiguration klicken: Ähnlich der C-Perspektive von Eclipse für C-Programme, gibt es eine Debug-Perspektive zum Debuggen. Selektieren Sie daher im folgenden Fenster Remember und Yes. 3

4

Orientierung in der Debug-Perspektive Bekannt in der Debug-Perspektive ist das Source-View aus der normalen C-Perspektive. Dort sehen Sie immer noch die geöffneten C-Dateien (1). In diesem Fenster ist stets eine Zeile markiert (4). Diese gibt die aktuelle Position der Programmausführung an. Gesteuert wird die Programmausführung über das Debug-View (2). Alle aktuellen Variablen und deren Werte sind unter dem Variablen-View (3) einsehbar. (Sollten Sie das Variablen-View nicht sehen, können Sie es einschalten unter Window Show View Variables ) Parallel wird ein weiteres Konsolenfester extra für das Programm geöffnet, das vorerst leer ist (da das Programm noch nichts gemacht hat). Steuern können Sie den Programmablauf mit den Kontroll-Knöpfen des Debug-Views: Von links nach rechts: Neustart des Debug-Laufes Normale Programmfortführung (bis zum nächsten Breakpoint ) ([F8]) Pause (Programmablauf ist hier schon pausiert) Beenden des Debug-Laufes Disconnect (für Debuggen eines Programms auf einem anderen Rechner, wird bei uns nicht verwendet) Einzelschritt (in eine Funktion hinein) ([F5]) Einzelschritt (über eine Funktion hinweg) ([F6]) Sprung aus einer Funktion heraus (findet erst Verwendung, wenn Sie selbst Funktionen schreiben) ([F7]) 5

Erster Lauf Führen Sie nun Einzelschritte in Ihrem Programm aus (mit dem Knopf oder [F6]) Dabei können Sie die Position im Programm sowie die Änderung der Variablen verfolgen. Sobald Sie an einem printf stehen und einen weiteren Einzelschritt ausführen, können Sie danach im Konsolenfenster die Ausgaben des Programms beobachten: Schreiten Sie dagegen über ein scanf, verschwindet die Positionsanzeige im Debugger so lange, bis Sie im Konsolenfenster etwas eingegeben haben. Erst dann können Sie weiter debuggen. Sehen Sie, wie sich die Zahl geändert hat? Je nachdem, ob Sie eine negative Zahle eingegeben haben, können Sie einen unterschiedlichen Verlauf des Programms feststellen, wenn Sie weiter schrittweise debuggen ( oder [F6]). Sie können übrigens jederzeit hin- und herschalten zwischen Debug- und C-Perspektive, indem Sie die Knöpfe oben rechts verwenden. Falls C/C++ nicht sichtbar ist, finden Sie es hinter dem Pfeil: 6

Nicht vergessen: Unabhängig davon, ob Sie die Perspektive wechseln, laufen Debugger und Programm weiterhin. Wenn Sie fertig gedebuggt haben, (d.h. wieder Programmcode ändern oder compilieren wollen) sollten Sie das Programm auf jeden Fall beenden (mit dem roten Stopp-Knopf, s.o.)! 7

Fortgeschrittene View: Breakpoints Breakpoints werden verwendet, um den Debugger an bestimmten Stellen im normalen Programmablauf zu aktivieren (nicht schon/nur am Programmanfang). Diese Funktion ist nützlich, wenn das Programm länger wird oder längere Schleifen durchlaufen werden, deren Verlauf man sich nicht ansehen will. Breakpoints können an jede Zeile, die eine Anweisung enthält, gesetzt werden. Wird diese Zeile nicht erreicht (z.b. weil der Zweig des IFs nicht durchlaufen wird), hält der Debugger das Programm nicht an. Sie sollten also immer genau darauf achten, dass Sie den Breakpoint an der richtigen Stelle setzen, damit Sie den kritischen Punkt nicht verpassen zurückspulen kann der Debugger das Programm nämlich nicht. Setzen Sie den Breakpoint, indem Sie am Linken Rand der Zeile (links von der Zeilennummer, falls Sie diese aktiviert haben), doppelt klicken. Es erscheint dann ein kleiner Punkt an dieser Stelle und im Breakpoints-View wird die Zeile eingetragen: Wenn Sie nun Resume ([F8]) wählen, läuft Ihr Programm normal weiter, bis es auf einen Breakpoint stößt. Erst dort können Sie den Debugger wieder steuern. Dies ist nützlich, wenn Sie nur an einer bestimmten Stelle im Programm debuggen wollen, ohne jeden einzelnen Schritt von Anfang an zu sehen. Sie können einen Breakpoint auch vorübergehend deaktivieren (ohne ihn zu löschen), indem Sie den Haken davor im Breakpoints-View entfernen. Eine Programmcodezeile ist übrigens nur eine von von vielen Möglichkeiten, einen Breakpoint zu setzen. Im Internet gibt es mit Sicherheit noch einiges zu entdecken. 8

View: Disassembly Hier sehen Sie deutlich den Zusamenhang zwischen Ihrem Source-Code und dem vom Compiler generierten Assembler-Code (rechts ist blau der Original-Code angezeigt. Dies ist eine Zusatzfunktion von Eclipse; er gehört natürlich nicht zum Assembler-Code): Übringens: Wenn Sie unter den Projekteinstellungen die Optimierung beim Compilieren einstellen, wird der Assembler-Code merklich kürzer: Die Optimierungsstufe des Compilers benutzt verschiedene Strategien, um Ihren Code zu verkürzen. Kürzerer Code braucht weniger Speicher und wird schneller ausgeführt, braucht aber auch länger zum Compilieren und erschwert das Debuggen, da teilweise Befehle umgestellt werden (im Assembler-Code), und das Programm (im Source-Coode) dann nicht so abläuft, wie Sie es erwarten. Wenn ein Programm fertig ist, d.h. ausgeliefert wird, schaltet man üblicherweise den Optimierungsvorgang an und deaktiviert die Debugging-Informationen dann ist ein Debuggen mit Sourcecode allerdings nicht mehr möglich. 9

10

View: Registers Die Hardware selbst kennt keine Variablen. Für den Prozessor hat eine Variable keinen Namen, sondern nur noch eine Speicheradresse. Um mit den Speicherinhalten zu arbeiten, muss eine Kopie in einen bestimmten Bereich des Prozessors (sog. Register ) angefertigt werden. Bei x86-prozessoren heißen die allgemen nutzbaren Register: eax, ebx, ecx, edx Außerdem gibt es ein paar weitere für spezielle Aufgaben: esp = Stack Pointer für die Stackverwaltung esi, edi = Quell-und Ziel-Index eip = Instruktions-Zeiger, zeigt auf den als nächstes auszuführenden Befehl Die genannten sind alle Ganzzahlig. Der Prozessor bietet auch Register für Fließkommawerte (st0, st1, st2,, st7). Moderne Prozessoren enthalten noch weitere Registersätze speziell für Massendatenverarbeitung (XMM, MMX oder Altivec, etc) von Multimedia- Anwendungen. Übrigens: Der Instruktionszeiger ist gewissermaßen eine Schwachstelle und Ziel von bestimmten Angriffsmethoden. Schafft es ein Angreifer hier eine Adresse einzuschleusen, an der der Code eines Computer-Virus liegt, führt der Prozessor unbemerkt ein schädliches Programm aus. Diese Attacke nennt man "Buffer Overflow". 11

Callstack, Springen in/aus Funktionen Findet ein Aufruf einer Funktion statt, für die der Debugger auch Sourcecode zur Verfügung hat, können Sie: In diese Funktion hieneinspringen ( Step into ; [F5]), über Sie hinweg ( Step over ; [F6]), oder aus ihr heraus ( Step return ; [F7]) Wenn Ihr Programm eine Funktion aufruft, deren Ausführung Sie verfolgen wollen, springen Sie hienein. Wenn Sie dann genug gesehen haben und erst wieder in der rufenden Funktion weiter debuggen wollen, springen Sie heraus. Wenn Ihr Programm eine Funktion aufruft, deren Sourcecode nicht vorliegt, oder Sie erst nach ihrer Rückkehr weiter debuggen wollen, springen sie darüber hinweg. Sie können selbstverständlich auch in Funktionen ohne Sourcecode hineinspringen, sehen dann aber nur den Assembler-Code. Im Debug-View von Eclipse sehen Sie den sog. Callstack. Dort ist, wie auf einem Stapel, gelistet, in welcher Funktion sich das Programm gerade befindet. Hier ein Beispiel mit einer rekursiven Funktion: 12