Upload
andrei-chis
View
227
Download
4
Embed Size (px)
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