Programmieren in Haskell Debugging

Ähnliche Dokumente
fungen Debugging Boris Tripolskij

Debugging mit GDB Albrecht Oster Proseminar C - Grundlagen und Konzepte

C/C++ Debugging mit CDT unter Eclipse

Entwicklungswerkzeuge

Visual Basic Editor CATIA V5

Vom Testkonzept zu JUnit

The ToolChain.com. Grafisches Debugging mit der QtCreator Entwicklungsumgebung

"C - Grundlagen und Konzepte"

Carlos Santos. Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften. Universität Hamburg

Beispiel 2a Die eigenen ersten Schritte mit dem Gnu-Debugger GDB für Remote-Debugging

Debugging in Magento

Debugging mit ddd (Data Display Debugger)

Allgemeine Hinweise. Softwareinstallation. Im Rahmen des Praktikums kommt folgende Software zum Einsatz

Programmieren in Haskell Einführung

Anleitung zum Arbeiten mit Microsoft Visual Studio 2008 im Softwarepraktikum ET/IT

Assembler - Einleitung

Stapelverarbeitung mit Adobe Acrobat Professional. Leibniz Universität IT Services Anja Aue

Einführung in die Programmierung Debugging, Programmbibliotheken

Einführung in Google Web Toolkit

Hochleistungsrechnen mit Windows. Compilieren, Ausführen und Debuggen paralleler Programme. Christian Terboven

VB.net Programmierung und Beispielprogramm für GSV

Visual Basic Express Debugging

Informatik für den Satellitenbau. Toolchains und Crosscompiler

Debuggen mit GDB (Gnu DeBugger) unter Eclipse

Erster Bug: eine Motte

Testen und Debugging


Einführung in die C-Programmierung

Algorithmen und ihre Programmierung

2 Grundlagen der Programmierung

Programmieren I. Die Programmiersprache Java. Institut für Angewandte Informatik

Kurzanleitung zur Benutzung der Entwicklungsumgebung Code::Blocks für die Übung aus Programmieren 1 und 2

C++ - Einführung in die Programmiersprache Fehler abfangen. Leibniz Universität IT Services Anja Aue

Institut für Computational Science Prof. Dr. H. Hinterberger. Praxismodul 1. Einführung in die Programmierung Erste Programme

Debugging in APEX. Christina Funke Apps Associates GmbH Dortmund

Übung zu Grundlagen der Betriebssysteme. 3. Übung

Programmieren mit Edipse 3

Computeranwendung in der Chemie Informatik für Chemiker(innen) 3. Software

Einführung zum Arbeiten mit Microsoft Visual C Express Edition

Tag 6 Repetitorium Informatik (Java)

Java-Tutorium WS 09/10

Modellierung und Programmierung 1

Einheit 06: Debugging in Eclipse

Debugging in Magento

Kapitel 7 - Debugger. Universität Mannheim

UI-Testing mit Microsoft Test Manager (MTM) Philip Gossweiler /

Begleitendes Praktikum zur Vorlesung Künstliche Intelligenz

SAP -Schnelleinstieg: ABAP-Entwicklung in Eclipse. Christoph Lordieck

Software Analyse Tooldemo: JQuery Sommersemester Jonas Pusch

Totalview. Henrichs NEC Australia. Dieter an Mey

Embedded-Linux-Seminare. Toolchains

Programmieren in Haskell Programmiermethodik

Programmiertechnik. Prof. Dr. Oliver Haase Raum G124 Tel: 07531/ Oliver Haase Hochschule Konstanz 1

Debugger. Perl. Einführung in den Perl Debugger. Bevor man den Debugger anwirft. Debugger Starten Features oder Was kann der Debugger?

Programmierkurs: Delphi: Einstieg

Testen mit JUnit. Motivation

Entwicklung mit mehreren Dateien

Software-Engineering Grundlagen des Software-Engineering

IEC Windows- Programmiersoftware für CPS500

Prüfungsklausur Entwicklungswerkzeuge und Software-Architektur Ergebnis der Klausur

Software-Engineering 2. Software-Engineering 2. Entwicklungsumgebungen (IDE) IT works. Klaus Mairon

Eclipse Tutorial.doc

Einführung in MS Visual Studio 2008

... Trigger - Fehlersuche (Debugging)

Tool-Chain. Übung. Eclipse, SVN, Ant, Cobertura, Metrics Labor "Software Engineering Experiment" Sebastian Meyer und Kai Stapel

Praktikum im Bereich Praktische Informatik Echtzeitgraphik in C++ und DirectX10. computer graphics & visualization

Grundlagen von C# - 2

Qt-Projekte mit Visual Studio 2005

Inhaltsverzeichnis. 1 Einleitung. Literatur. 1.1 CVS (Concurrent Version System) [Pru03, Zee02, Ced05]

Einleitung und Begriffliches. Einleitung. Programmiersprachen. Software-Komplexität ist inhärent und hat vor allem folgende Ursachen

mgssepa.dll SEPA LIBRARY MICHAEL GRUBE MG SOFTWARE ENTWICKLUNG

Praktikum zu Einführung in die Informatik für LogWings und WiMas Wintersemester 2013/14

Eine Einführung in. für mathematisch- technische Assistenten / Informatik (IHK)

BASIC-Tiger Starter Kit. Tel: +49 (241) Fax: +49 (241)

Informatik für Elektrotechnik und Informationstechnik

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Die ersten C#- Programme erstellen

Kurzanleitung zur Verwendung der Java-IDE NetBeans (1)

Seite Seite 2

Programmierung unter GNU/Linux für Einsteiger

Scheduling- Algorithmen. Handbuch für Endnutzer

Einführung in die Programmierung Blockkurs Java

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Anzeige des Java Error Stack in Oracle Forms

Grundlagen der Programmierung UE

Modulare Programmierung und Bibliotheken

Compute Unified Device Architecture CUDA

Testplan. Hochschule Luzern Technik & Architektur. Software Komponenten FS13. Gruppe 03 Horw,

Zahlenraten: Ein Spiel in Java.

Whitepaper. Produkt: combit address manager & combit Relationship Manager. Debuggen von Scripts in Visual Studio 2005

Grundlagen der Programmierung UE

Verarbeitung unendlicher Datenstrukturen Jetzt können wir z.b. die unendliche Liste aller geraden Zahlen oder aller Quadratzahlen berechnen:

Dokumentation zu Pocket NeuroNet

Transkript:

Programmieren in Haskell Debugging Peter Steffen Universität Bielefeld Technische Fakultät 30.01.2009 1 Programmieren in Haskell

Debugger Definition laut Wikipedia: Ein Debugger (von engl. bug im Sinne von Programmfehler) ist ein Werkzeug zum Diagnostizieren, Auffinden und Beheben von Fehlern in Computersystemen, dabei vor allem in Programmen, aber auch in der für die Ausführung benötigten Hardware. 2 Programmieren in Haskell

Funktionen eines Debuggers Die Funktionen eines Debuggers sind im Wesentlichen: die Steuerung des Programmlaufs, insbesondere durch Haltepunkte und die Einzelschritt-Verarbeitung von Befehlen das Inspizieren von Daten das Modifizieren von Speichern, z.b. des Hauptspeichers das Auffangen von Rückmeldungen und Fehlerzuständen, z.b. Speicherzugriffsfehler, oder eine versuchte Division durch Null 3 Programmieren in Haskell

Gebräuchliche Debugger für imperative Sprachen GDB der GNU Debugger unterstützt C, C++, FORTRAN, Pascal, Modula-2 und Ada Der Debugger besitzt keine eigene grafische Oberfläche, sondern nutzt die Standard-Ein/Ausgabe grafische Debugging-Oberflächen, die den GDB als Backend verwenden: Eclipse-Plugin, ddd, cgdb Microsoft Visual Studio IDE unterstützt Visual Basic, C++ und C# Delphi IDE jdb Debugger für Java 4 Programmieren in Haskell

Braucht man für Haskell einen Debugger? Für Haskell gab es lange Zeit keine Debugging-Möglichkeiten. Gründe dafür sind: Das Typ-System eliminiert eine große Zahl von Fehlern schon während des Kompilierens. When the code compiles, it usually works Unit-Testen mit Quickcheck und HUnit erlaubt, individuelle Komponenten einer Software systematisch zu testen, so dass man sich einem Fehler relativ schnell annähern kann. Mit den interaktiven Umgebungen hugs und ghci kann man sehr einfach individuelle Funktionen testen 5 Programmieren in Haskell

Haskell Debugger Hat (http://www.haskell.org/hat). Der Code wird mit speziellem zusätzlichem Code für den Debugger kompiliert. Während der Laufzeit des Programms wird ein spezieller Trace in eine Datei geschrieben Diese Datei kann mit speziellen Browser-Werkzeugen angeschaut werden Nachteile: Alle Bibliotheken, die ein Programm verwendet, müssen extra für Hat kompiliert werden Hat unterstützt nur eine Untermenge von Haskell 98 Das Programm muss vollständig durchlaufen, bevor der Trace gespeichert werden kann. Wenn ein Programm nicht terminiert, funktioniert das nicht Hat hat hohe Laufzeitkosten, die Programme laufen etwa 50-150 mal langsamer 6 Programmieren in Haskell

Haskell Debugger Hood (http://www.haskell.org/hood). arbeitet nach dem gleichen Prinzip wie Hat. seit Juli 2000 nicht mehr weiterentwickelt. 7 Programmieren in Haskell

Haskell Debugger ghci debugger (http://www.haskell.org/ghc). seit Version 6.8 in den ghc integriert um den ghc in der Techfak verwendet zu können muss man ghc-6.10 der RCINFO-Liste (in der Datei.rcrc) hinzufügen arbeitet mit einem simplen, interaktiven Schema, der Benutzer kann die Ausführung eines Programms an beliebiger Stelle stoppen und sich die Werte von Variablen anzeigen lassen unterstützt einen Trace-Mode: der Debugger speichert jeden Reduktionsschritt, aber die Berechnung wird nur bei einem Breakpoint unterbrochen. Hier können dann die einzelnen Reduktionsschritte angezeigt werden Behandelt Exceptions (wie z.b. pattern match-fehler oder error) unterstützt alle Programme, die sich auch mit dem ghci verarbeiten lassen verlangsamt die Ausführung des Programms nur unwesentlich 8 Programmieren in Haskell

ghci Debugger wichtige Kommandos :break <zeile> Setzt einen Breakpoint. Das Programm wird an dieser Stelle unterbrochen :list Zeigt den Programmcode an der aktuellen Position an :set -fprint-evld-with-show benutzt die jeweilige show Funktion zum Anzeigen eines Wertes :print <Ausdruck> gibt den Wert des Ausdrucks aus, allerdings ohne diesen zu evaluieren :force <Ausdruck> evaluiert den Ausdruck und gibt ihn aus :continue führt die Berechnung nach einem Breakpoint weiter :show breaks zeigt die aktuellen Breakpoints an :delete <nummer> löscht einen Breakpoint :step führt einen einzelnen Reduktionsschritt durch :set stop :list zeigt nach jedem Reduktionsschritt automatisch den Quellcode an der aktuellen Position an :abandon bricht die aktuelle Berechnung ab 9 Programmieren in Haskell

ghci Debugger wichtige Kommandos :trace <Ausdruck> speichert alle Zwischenstufen der Berechnung bis zum Erreichen eines Breakpoints :hist zeigt die Zwischenstufen der Berechnung an (zusammen mit :trace) :back springt einen Reduktionsschritt zurück :forward springt einen Reduktionsschritt vor :set -fbreak-on-exception stoppt die Berechnung bei einer Exception (z.b. ein Pattern-Match-Fehler) 10 Programmieren in Haskell

Live Demo http://www.haskell.org/ghc/docs/latest/html/users_guide/ghcidebugger.html 11 Programmieren in Haskell