Debug Points. Breakpoints, but better!

esug 27 views 43 slides Sep 04, 2024
Slide 1
Slide 1 of 58
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52
Slide 53
53
Slide 54
54
Slide 55
55
Slide 56
56
Slide 57
57
Slide 58
58

About This Presentation

Talk from ESUG 2024

Debug Points Breakpoints, but better! Steven Costiou

PDF: http://archive.esug.org/ESUG2024/day1/08-steven-debug-points.pdf


Slide Content

Steven Costiou
Debug Points
Breakpoints, but better!


Breakpoints
•The tool to interrupt executions

Debug Points
•A framework to implement breakpoints
Vocabulary


Breakpoints
•The tool to interrupt executions

Debug Points
•A framework to implement breakpoints
Vocabulary


Breakpoints become…

•Configurable

•Composable

•Extensible

Debug points
(if you need…)


Breakpoints become…

•Configurable

•Composable

•Extensible

Debug points
(if you need…)
Better user
experience


Breakpoints become…

•Configurable

•Composable

•Extensible

Debug points
(if you need…)
Better user
experience
More precision


Breakpoints become…

•Configurable

•Composable

•Extensible

Debug points
(if you need…)
Better user
experience
More precision
Domain-specific 

breakpoints

Debug points

Debug points

Debug points

Debug points

Debug points

Debug points

Configuration

Configuration

Configuration

Configuration

Configuration
General information

Configuration
General information
Source code

Configuration
General information
Control
Source code

Configuration
Configuration
General information
Control
Source code

Composition
Breakpoint behaviors

Composition
Breakpoint behaviors
contextual access

Composition
Breakpoint behaviors
contextual access

Object-centric breakpoints

DEMOS

DEMOS

DEMOS

DEMOS
when does ‘value’ 

variable change?

DEMOS
when does ‘value’ 

variable change?
and what is the

value?

DEMOS
when does ‘value’ 

variable change?
and what is the

value? I only want to know

when ‘value’ > 7

DEMOS

DEMOS
when are we
arriving in m4 from m3?

DEMOS
when are we
arriving in m4 from m3?
break here

DEMOS
when are we
arriving in m4 from m3?
break here
then step…

DEMOS
when are we
arriving in m4 from m3?
break here
then step…
or break here

DEMOS
however other paths
can go through m3!

DEMOS
however other paths
can go through m3!
I only want
this path!

DEMOS
however other paths
can go through m3!
I only want
this path!
break here

DEMOS
however other paths
can go through m3!
I only want
this path!
break here
only if break
here first

Building breakpoints

Why?
•Recurring needs
•Problem or domain specific needs
•New debugging tools (transfering research)


Building breakpoints

Why?
•Recurring needs
•Problem or domain specific needs
•New debugging tools (transfering research)


How?
•Subclass and specializes the breakpoint model
•Subclass and specializes the breakpoint behavioral
model
•Build presenters for automatic tool integration

Simplified model

Simplified model
types of 

breakpoint

Simplified model
types of 

breakpoint
what any breakpoint can do

Simplified model
types of 

breakpoint
what any breakpoint can do
Spec presenters

DEMO: building a replay point

DEMO: building a replay point
I want to control the
value of the condition
to deterministically choose
which branch to execute

DEMO: building a replay point
operation

DEMO: building a replay point
operation
replay 

point

DEMO: building a replay point
operation
replay 

point
replace the operation
by a custom value

DEMO: building a replay point
operation
replay 

point
replace the operation
by a custom value
inject the value into
the conditional

DEMO: building a replay point
ReplayPoint

Status

Integrated into Pharo 12
•Replaces the breakpoint implementation
•Works (it should…)

Status

Integrated into Pharo 12
•Replaces the breakpoint implementation
•Works (it should…)

What’s next?
•Model improvements
•GUI improvements
•Archive and remove the old breakpoint model

Acknowledgments

Main developers
•Max Zurbriggen (UHZ) — original idea and implementation
•Adrien Vanègue (Inria) — Pharo implementation and integration
•Steven Costiou (Inria) — design and integration

Acknowledgments

Main developers
•Max Zurbriggen (UHZ) — original idea and implementation
•Adrien Vanègue (Inria) — Pharo implementation and integration
•Steven Costiou (Inria) — design and integration

Supervision
•Marcus Denker (Inria)
•Steven Costiou (Inria)
•Alberto Bacchelli (UZH)

Thank you!