The Moldable Debugger, SLE 2014

Preview:

DESCRIPTION

The Moldable Debugger, SLE 2014

Citation preview

The Moldable DebuggerA Framework for Developing Domain-Specific Debuggers

Andrei ChișUniversity of Bern

@chis_andreiandreichis.com

Tudor GîrbaCompuGroup Medical

Schweiz AG

@girbatudorgirba.com

Oscar NierstraszUniversity of Bern

@onierstraszscg.unibe.ch/staff/oscar

2

Debugging needs Motivating examples

The Moldable Debugger

Activation predicatesDomain-specificextensions

Roadmap

1 23

4 5

Object-oriented applications use objects to express a model

of the business domain

3

4

5

6

Mind the abstraction gap

7

A publisher/subscriber framework

8

2. Publish an event

aDispatcher

1. Subscribe for events

3. Deliver the event

aPublisher

aSubscriber aSubscriber aSubscriber

Pressing CMD+s in an editor

2. press CMD+s

aDispatcher

1. Register for CMD+s event

3. Deliver CMD+s event

aUser

aTextEditor...

9

10

11

12

13

14

15

16

17

18

19

20

21

22

PetitParser

identifier letter , (letter / digit) *

letter *

,

/

letter digit

23

24

IdentifierParser new parse: 'aLong32Identifier'

25

26

27

28

29

30

31

The Moldable Debugger

32

33

Debugging widgets

Debugging actions

34

35

Next subscription

Selected subscription

36

37

Next production

Next parser

Production(aproduction)

Next failure

Stream position(anInteger)

Stream position changed

38

Domain specific-extension

39

DebuggingWidget

DebuggingView

DebuggingAction

DebuggingSession

DebuggingPredicate

PrimitivePredicate

HighLevelPredicate

***

Domain specific-extension

40

DebuggingWidget

DebuggingView

DebuggingAction

DebuggingSession

DebuggingPredicate

PrimitivePredicate

HighLevelPredicate

***

Domain specific-extension

DebuggingWidget

DebuggingView

DebuggingAction

DebuggingSession

DebuggingPredicate

PrimitivePredicate

HighLevelPredicate

***

41

DebuggingWidget

DebuggingView

DebuggingAction

DebuggingSession

DebuggingPredicate

PrimitivePredicate

HighLevelPredicate

***

StepToNextParser

StepToNextProduction

StepToNextFailure

...

Domain specific-extension

42

Petit Parser Events

43

Petit Parser Events

SUnit Glamour

43

Size of extensions in LOC

44

45

Activation predicate

DebuggingWidget

DebuggingView

DebuggingAction

DebuggingSession

DebuggingPredicate

PrimitivePredicate

HighLevelPredicate

***

ActivationPredicate

46

Activation predicate

DebuggingWidget

DebuggingView

DebuggingAction

DebuggingSession

DebuggingPredicate

PrimitivePredicate

HighLevelPredicate

***

ActivationPredicate

47

Petit Parser Events

SUnit Glamour

48

Petit Parser Events

SUnit Glamour

49

Petit Parser Events

SUnit Glamour

50

Conclusions

51

Mind the abstraction gap

Conclusions

51

Mind the abstraction gap

DebuggingWidget

DebuggingView

DebuggingAction

DebuggingSession

DebuggingPredicate

PrimitivePredicate

HighLevelPredicate

***

ActivationPredicate

Conclusions

51

Mind the abstraction gap

DebuggingWidget

DebuggingView

DebuggingAction

DebuggingSession

DebuggingPredicate

PrimitivePredicate

HighLevelPredicate

***

ActivationPredicate

Conclusions

51

Mind the abstraction gap

DebuggingWidget

DebuggingView

DebuggingAction

DebuggingSession

DebuggingPredicate

PrimitivePredicate

HighLevelPredicate

***

ActivationPredicate

Conclusions

51

gt.moosetechnology.org

52

Recommended