High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our...
Transcript of High-Level Debuggers: facilities and interfaces · Introduction - Background The Problem Our...
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Introduction - BackgroundThe Problem
Our ApproachResults - Future Work
Live DemoFuture Work
Live@Lust
Nikos Papoylias High-Level Debuggers
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
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
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
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
Introduction - BackgroundThe Problem
Our ApproachResults - Future Work
Live DemoFuture Work
Questions ?
Nikos Papoylias High-Level Debuggers