High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our...

40
Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design and Development of a debug-oriented I.D.E. by Nikos Papoylias Committee: Assistant Professor Michail G. Lagoudakis (Supervisor) Assistant Professor Katerina Mania Assistant Professor Vasilis Samoladas Departement of Electronic and Computer Engineering Technical University of Crete, 2009 Nikos Papoylias High-Level Debuggers

Transcript of High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our...

Page 1: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

High-Level Debuggers: facilities andinterfaces

Design and Development of a debug-oriented I.D.E.

by Nikos Papoylias

Committee:Assistant Professor Michail G. Lagoudakis (Supervisor)

Assistant Professor Katerina ManiaAssistant Professor Vasilis Samoladas

Departement of Electronic and Computer EngineeringTechnical University of Crete, 2009

Nikos Papoylias High-Level Debuggers

Page 2: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

What is this all about ?

From the broad spectrum of computer science we concernourselves with the fields of:

Programming Languages and ToolsHuman-Computer Interaction

More specifically we deal with:

Debugging SystemsIntegrated Development Environments (I.D.Es)

By proposing both theoritically and technologically ways toimprove these systems.

Nikos Papoylias High-Level Debuggers

Page 3: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

Outline1 Introduction - Background

Motivation: Automation, Debugging and I.D.EsSymbolic-Debuggers, front-ends and systems

2 The ProblemThe current situationHigh-Level debuggingRelated Work

3 Our ApproachRethinking the Debugging Information FlowThe 5 pillars of our HLD systemsImplementation

4 Results - Future WorkLive DemoFuture Work

Nikos Papoylias High-Level Debuggers

Page 4: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

Motivation: Automation, Debugging and I.D.EsSymbolic-Debuggers, front-ends and systems

Outline1 Introduction - Background

Motivation: Automation, Debugging and I.D.EsSymbolic-Debuggers, front-ends and systems

2 The ProblemThe current situationHigh-Level debuggingRelated Work

3 Our ApproachRethinking the Debugging Information FlowThe 5 pillars of our HLD systemsImplementation

4 Results - Future WorkLive DemoFuture Work

Nikos Papoylias High-Level Debuggers

Page 5: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

Motivation: Automation, Debugging and I.D.EsSymbolic-Debuggers, front-ends and systems

The Development cycle and debugging

Debuggers are the cardiographs of software

While the term ’debugger’ is attributed to Grace Hoppercreator of Cobol. . .debugging as a process is in fact a general characteristicof all human labor.

Nikos Papoylias High-Level Debuggers

Page 6: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

Motivation: Automation, Debugging and I.D.EsSymbolic-Debuggers, front-ends and systems

Project workflow and I.D.Es

The succession of programming processes, like codingand debugging, determine the ’project’s workflow’Debugging and testing cover roughly 50% of this workflowin timeAn I.D.E. automates and organizes the different parts ofthe workflow

Nikos Papoylias High-Level Debuggers

Page 7: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

Motivation: Automation, Debugging and I.D.EsSymbolic-Debuggers, front-ends and systems

Project workflow and I.D.Es

Emacs was one of the first such integration environmentsystem:

Nikos Papoylias High-Level Debuggers

Page 8: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

Motivation: Automation, Debugging and I.D.EsSymbolic-Debuggers, front-ends and systems

Project workflow and I.D.Es

that set an example for modern I.D.Es (Anjuta)

Nikos Papoylias High-Level Debuggers

Page 9: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

Motivation: Automation, Debugging and I.D.EsSymbolic-Debuggers, front-ends and systems

Outline1 Introduction - Background

Motivation: Automation, Debugging and I.D.EsSymbolic-Debuggers, front-ends and systems

2 The ProblemThe current situationHigh-Level debuggingRelated Work

3 Our ApproachRethinking the Debugging Information FlowThe 5 pillars of our HLD systemsImplementation

4 Results - Future WorkLive DemoFuture Work

Nikos Papoylias High-Level Debuggers

Page 10: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

Motivation: Automation, Debugging and I.D.EsSymbolic-Debuggers, front-ends and systems

Debugging inner-workings

System layers and facilities of debugging:

Nikos Papoylias High-Level Debuggers

Page 11: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

Motivation: Automation, Debugging and I.D.EsSymbolic-Debuggers, front-ends and systems

Debugging information flow

A typical debugging information flow:

Nikos Papoylias High-Level Debuggers

Page 12: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

Motivation: Automation, Debugging and I.D.EsSymbolic-Debuggers, front-ends and systems

Symbolic debugging facilities

A symbolic debugger – like gdb:

Allows you to monitor what is going on ’inside’ yourprogramStart your program, specifing anyting that might affect it’sbehaviourMake your program stop on specified conditionsExamine what has happened when your program stoppedor crashedChange things in your program and continue execution

Nikos Papoylias High-Level Debuggers

Page 13: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

Motivation: Automation, Debugging and I.D.EsSymbolic-Debuggers, front-ends and systems

Symbolic debugging facilities

Line by line navigationstep in, step out, step over. . .

Stack Examinationbacktrace, up, down. . .

Breakpoints, Watchpoints, Catchpointsbreak main.c:37, watch <expr>. . .

Data evaluation/editingprint <expr>. . .

Nikos Papoylias High-Level Debuggers

Page 14: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

Motivation: Automation, Debugging and I.D.EsSymbolic-Debuggers, front-ends and systems

Front-Ends and I.D.Es

Most I.D.Es today, supply a simple front-end to a symbolicdebugger:

Nikos Papoylias High-Level Debuggers

Page 15: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

Motivation: Automation, Debugging and I.D.EsSymbolic-Debuggers, front-ends and systems

Debugging Systems

While few, function as debugging systems providing someadditional facilities, like DDD, Gnat or JBixle do:

Nikos Papoylias High-Level Debuggers

Page 16: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

The current situationHigh-Level debuggingRelated Work

Outline1 Introduction - Background

Motivation: Automation, Debugging and I.D.EsSymbolic-Debuggers, front-ends and systems

2 The ProblemThe current situationHigh-Level debuggingRelated Work

3 Our ApproachRethinking the Debugging Information FlowThe 5 pillars of our HLD systemsImplementation

4 Results - Future WorkLive DemoFuture Work

Nikos Papoylias High-Level Debuggers

Page 17: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

The current situationHigh-Level debuggingRelated Work

The current situation

Stagnation. . .Today’s advancement in IDEs although constantly offeringnew features and facilites has left debugging system nearlywhere there were 20 or more years ago.Adoption of academically proposed features ranges fromslow to none.

Nikos Papoylias High-Level Debuggers

Page 18: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

The current situationHigh-Level debuggingRelated Work

Outline1 Introduction - Background

Motivation: Automation, Debugging and I.D.EsSymbolic-Debuggers, front-ends and systems

2 The ProblemThe current situationHigh-Level debuggingRelated Work

3 Our ApproachRethinking the Debugging Information FlowThe 5 pillars of our HLD systemsImplementation

4 Results - Future WorkLive DemoFuture Work

Nikos Papoylias High-Level Debuggers

Page 19: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

The current situationHigh-Level debuggingRelated Work

High-Level debugging

Our Proposition: "High-level debugging systems"that can intergrate legacy technologies, not by justproviding ’graphical access’but by offering more sophisticated methods of monitoring asoftware systemand new ways for a programmer to form his developmentcycle.

Nikos Papoylias High-Level Debuggers

Page 20: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

The current situationHigh-Level debuggingRelated Work

Outline1 Introduction - Background

Motivation: Automation, Debugging and I.D.EsSymbolic-Debuggers, front-ends and systems

2 The ProblemThe current situationHigh-Level debuggingRelated Work

3 Our ApproachRethinking the Debugging Information FlowThe 5 pillars of our HLD systemsImplementation

4 Results - Future WorkLive DemoFuture Work

Nikos Papoylias High-Level Debuggers

Page 21: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

The current situationHigh-Level debuggingRelated Work

Related Work

Published Related WorkDomain-specific debugging languages (Duel,opium,others)Replay, reverse debugging and tracingLanguage-aware tools, Harmonia Project – BerkeleyA lot of work on parallel execution

Nikos Papoylias High-Level Debuggers

Page 22: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

The current situationHigh-Level debuggingRelated Work

Related Work

Related Technological AdvancementsGdb 7.0 debugging-scripting, reverse executionJBixle call-graph and data-visualizations (much like ddd)ODB, Cisco debugger and others reverse executionVisual Studio’s visualisersMathematica Arbitary computation and math visualisations

Nikos Papoylias High-Level Debuggers

Page 23: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

Rethinking the Debugging Information FlowThe 5 pillars of our HLD systemsImplementation

Outline1 Introduction - Background

Motivation: Automation, Debugging and I.D.EsSymbolic-Debuggers, front-ends and systems

2 The ProblemThe current situationHigh-Level debuggingRelated Work

3 Our ApproachRethinking the Debugging Information FlowThe 5 pillars of our HLD systemsImplementation

4 Results - Future WorkLive DemoFuture Work

Nikos Papoylias High-Level Debuggers

Page 24: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

Rethinking the Debugging Information FlowThe 5 pillars of our HLD systemsImplementation

Rethinking the debugging information flow

Rearranging the basics..

Figure: Before Figure: After

Nikos Papoylias High-Level Debuggers

Page 25: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

Rethinking the Debugging Information FlowThe 5 pillars of our HLD systemsImplementation

Outline1 Introduction - Background

Motivation: Automation, Debugging and I.D.EsSymbolic-Debuggers, front-ends and systems

2 The ProblemThe current situationHigh-Level debuggingRelated Work

3 Our ApproachRethinking the Debugging Information FlowThe 5 pillars of our HLD systemsImplementation

4 Results - Future WorkLive DemoFuture Work

Nikos Papoylias High-Level Debuggers

Page 26: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

Rethinking the Debugging Information FlowThe 5 pillars of our HLD systemsImplementation

The 5 pillars of our HLD System

1. Syntax-aware navigation and debuggingbreadth-first (bottom-up) navigationdepth-first navigation (human mode)referenced variables instead of localsymbol-browsing, completion, refactoring . . .

Nikos Papoylias High-Level Debuggers

Page 27: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

Rethinking the Debugging Information FlowThe 5 pillars of our HLD systemsImplementation

The 5 pillars of our HLD System

2. Data VisualisationData as diagrams of abstract graphs and networksa generic A.P.I. for visualising language-oriented datatypesediting and updating, graph expansion, layoutcapabilites. . .

Nikos Papoylias High-Level Debuggers

Page 28: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

Rethinking the Debugging Information FlowThe 5 pillars of our HLD systemsImplementation

The 5 pillars of our HLD System

3. General-purpose extention languagetotal control over our parser, visulisation sub-system,symbolic-debuggerhigh-level debugging A.P.I.inter-language evaluation, python to C calls

Nikos Papoylias High-Level Debuggers

Page 29: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

Rethinking the Debugging Information FlowThe 5 pillars of our HLD systemsImplementation

The 5 pillars of our HLD System

4. Reverse DebuggingCommunity proposal, high-priority project for FSFbased on experimental work done for gdbour implementation integrates syntax-navigation i.estepping back whole structurescan exhibit memory enhancements through selectiverecording

Nikos Papoylias High-Level Debuggers

Page 30: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

Rethinking the Debugging Information FlowThe 5 pillars of our HLD systemsImplementation

The 5 pillars of our HLD System

5. Innovative interfacesNew graphic widgets, dual-panel, graph-widget, console,icon groups . . .Fully scriptable, on-line extentible environmentNew project management and web-documentationapproachesSpeech input for basic debugging controls

Nikos Papoylias High-Level Debuggers

Page 31: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

Rethinking the Debugging Information FlowThe 5 pillars of our HLD systemsImplementation

Outline1 Introduction - Background

Motivation: Automation, Debugging and I.D.EsSymbolic-Debuggers, front-ends and systems

2 The ProblemThe current situationHigh-Level debuggingRelated Work

3 Our ApproachRethinking the Debugging Information FlowThe 5 pillars of our HLD systemsImplementation

4 Results - Future WorkLive DemoFuture Work

Nikos Papoylias High-Level Debuggers

Page 32: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

Rethinking the Debugging Information FlowThe 5 pillars of our HLD systemsImplementation

Overview

Five interconnected sub-systems constitute the core:the syntax-parserthe symbolic debuggerthe graph-visualisation sub-systemthe extention environment and languagethe project-management module

On top of them, lie:High-level debugging A.P.IUser interface and facilities

Nikos Papoylias High-Level Debuggers

Page 33: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

Rethinking the Debugging Information FlowThe 5 pillars of our HLD systemsImplementation

Technologies

Over a dozen different technologies and software used.Multi-language approach in C and Python.

syntax parser: flex, bison, libc, glib (n-ary trees), LALR(1)parsersymbolic debugger: gdb/mi, PLYvisualisation, interfaces: gtk+, pygtk, graphviz,dot-language, pocketsphinx, wsj-corporaproject management: gnu-make, pkg-confighld-api and scripting: python-introspection, gdb/mi

Nikos Papoylias High-Level Debuggers

Page 34: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

Live DemoFuture Work

Outline1 Introduction - Background

Motivation: Automation, Debugging and I.D.EsSymbolic-Debuggers, front-ends and systems

2 The ProblemThe current situationHigh-Level debuggingRelated Work

3 Our ApproachRethinking the Debugging Information FlowThe 5 pillars of our HLD systemsImplementation

4 Results - Future WorkLive DemoFuture Work

Nikos Papoylias High-Level Debuggers

Page 35: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

Live DemoFuture Work

Live@Lust

Nikos Papoylias High-Level Debuggers

Page 36: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

Live DemoFuture Work

Outline1 Introduction - Background

Motivation: Automation, Debugging and I.D.EsSymbolic-Debuggers, front-ends and systems

2 The ProblemThe current situationHigh-Level debuggingRelated Work

3 Our ApproachRethinking the Debugging Information FlowThe 5 pillars of our HLD systemsImplementation

4 Results - Future WorkLive DemoFuture Work

Nikos Papoylias High-Level Debuggers

Page 37: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

Live DemoFuture Work

Misha R.IDE innovative and complete

This was only the beggining of our trip from an innovative I.D.Eto a complete solution:

Interfaces for legacy facilities:catchpoints, watchpoints, tracing

Other common features of I.D.Es:refactoring, unit-testing, profiling, revisioning, ui-design

Nikos Papoylias High-Level Debuggers

Page 38: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

Live DemoFuture Work

H.L.D. system improvements

We want to further integrate the syntax-parser with the rest ofthe system:

for reverse-debugging memory optimizationsfor static code analysis on multi-threaded projectsfor call-graph representations and breakpointsto support incremental parsing

Nikos Papoylias High-Level Debuggers

Page 39: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

Live DemoFuture Work

Multi-Language, multi-purpose environments

Probing Further: New ideas that have emergedBidirectional seamless interconnection of more thantwo languagesDesktop and web2.0 unification under one sourceLiteral WYSIWYM programming..and much, much more in Misha R.evolution

Nikos Papoylias High-Level Debuggers

Page 40: High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our Approach Results - Future Work High-Level Debuggers: facilities and interfaces Design

Introduction - BackgroundThe Problem

Our ApproachResults - Future Work

Live DemoFuture Work

Questions ?

Nikos Papoylias High-Level Debuggers