SlideShare une entreprise Scribd logo
1
Towards Object-centric
Time-traveling Debuggers
Maximilian Ignacio Willembrinck Santander
Steven Costiou
Adrien Vanègue
Anne Etien
2
Agenda
I. Context
II. Proposition
III. Our Work
Towards
Object-centric
Time-traveling
Debuggers
● Debugging is a time-consuming task.
● Involves repetitive and tedious manual operations.
3
New debugging tools…
Why?
● Debugging is a time-consuming task.
● Involves repetitive and tedious manual operations.
4
New debugging tools…
Why?
Debugging Valuable
Activities
● Debugging is a time-consuming task.
● Involves repetitive and tedious manual operations.
Debugging Valuable
Activities
5
New debugging tools…
Why?
● Debugging is a time-consuming task.
● Involves repetitive and tedious manual operations.
6
New debugging tools…
Why?
StepInto StepOver
Breakpoints Repeat
Debugging Valuable
Activities
7
New debugging tools…
Why?
Debugging is hard.
We saw an opportunity to improve the debugging
experience.
8
Debugging Objects is Challenging:
An Example
assert:
splitOn:
equals:
Produces 3 OrderedCollection
9
Debugging Objects is Challenging:
An Example
There is an OrderedCollection instantiated
somewhere during that call.
“I want to see how its instance variables evolve”
10
Debugging Objects is Challenging:
An Example
There is an OrderedCollection instantiated
somewhere during that call.
“I want to see how its instance variables evolve”
1. Find the object
2. Specific object
debugging operations
To instantiation instruction
Conventional Debugging
Many steps /
uncomfortable conditional breakpoints
11
Debugging Objects is Challenging:
An Example
1. Find the object
2. Specific object
debugging operations
Are there special tools to make
these task easier?
● What is Object-centric debugging [1]?
○ Makes objects the focus of debugging operations.
○ Debugging operations are defined to answer developer questions
related to runtime behavior of objects.
○ Object-centric Debugging operators examples:
■ Halt on read
■ Halt on write
■ Halt on call
12
Object-centric debugging?...
[1] J. Ressia, A. Bergel, O. Nierstrasz, Object-centric debugging, in: Proceeding of the 34rd international conference on Software engineering, ICSE ’12, 2012.
● It helps debugging when:
○ Developers debugging questions are closer to the objects
which model the domain.
○ Developers wants to follow an object behavior, avoiding
traditional breakpoint management tediousness. e.g: “I want to
see how its instance variables evolve”
● A prototype was presented and shown to be more effective supporting
typical debugging tasks than traditional stack-oriented debugger.
13
Object-centric
A promising debugging approach for OOP[1]
[1] J. Ressia, A. Bergel, O. Nierstrasz, Object-centric debugging, in: Proceeding of the 34rd international conference on Software engineering, ICSE ’12, 2012.
● Scoping debugging operations (such as breakpoints) on specific
object is difficult!
○ Devs must initially find such object identity first.
○ Manually step to the object of interest, or step through
breakpoints hits to find it.
14
The problem...
● Scoping debugging operations (such as breakpoints) on specific
object is difficult!
○ Devs must initially find such object identity first.
○ Manually step to the object of interest, or step through
breakpoints hits to find it.
15
The problem...
TEDIOUS AND
ERROR-PRONE MANUAL
WORK!
● Scoping debugging operations (such as breakpoints) on specific
object is difficult!
○ Devs must initially find such object identity first.
○ Manually step to the object of interest, or step through
breakpoints hits to find it.
If only there was a way to fix this ...
16
The problem...
TEDIOUS AND
ERROR-PRONE MANUAL
WORK!
● Main features: reverse a program execution and deterministic replay.
○ With these debuggers, any stepping error can be amended by
stepping back. (Stepped too far? No need to restart, just take a
step back).
○ Developers want to check a past state of the program? No need
to restart, just reverse it. e.g: reverse to an object instantiation.
17
Time-traveling debuggers
● To the best of our knowledge, time-traveling solutions
don't provide object-centric debugging operators.
18
There is another problem…
● Improves debugging experience in OOP.
19
Context summary
Object Centric
Debuggers
Time-Traveling
Debuggers
● Sill tedious and error prone.
● Improves tediousness, and debugging/stepping
mistakes are less costly.
● So far, no support for object-centric debugging.
● Improves debugging experience in OOP.
20
Context summary
Object Centric
Debuggers
● Sill tedious and error prone.
?
Time-Traveling
Debuggers
● Improves tediousness, and debugging/stepping
mistakes are less costly.
● So far, no support for object-centric debugging.
21
Agenda
I. Context
II. Proposition
III. Our Work
Towards
Object-centric
Time-traveling
Debuggers
22
Our proposition
?
?
?
1. New debugging
tools for OOP
23
Our proposition
?
?
?
1. New debugging
tools for OOP
2. How to combine them?
Second general question:
How to combine them?
24
How to combine them?
Our answer:
Time-Traveling Queries
How?
25
Combining both techniques
Time-Traveling Queries*
(*) M. Willembrinck, S. Costiou, A. Etien, S. Ducasse. Time-Traveling Debugging Queries: Faster Program Exploration.
International Conference on Software Quality, Reliability, and Security, Dec 2021, Hainan Island, China.
What is the value of this variable during execution?
On step 1 value changed from nil to 100
On step 4 value changed from 100 to 200
On step 40 value changed from 200 to 0
…
26
Combining both techniques
Time-Traveling Queries*
Find execution data and explore your execution
conveniently from the Query Results
(*) M. Willembrinck, S. Costiou, A. Etien, S. Ducasse. Time-Traveling Debugging Queries: Faster Program Exploration.
International Conference on Software Quality, Reliability, and Security, Dec 2021, Hainan Island, China.
We developed SeekerOC and an
Enhanced Pharo Inspector to improve the
debugging experience.
Made for Pharo 10.
27
Combining both techniques
With Time-Traveling Queries
28
Agenda
I. Context
II. Proposition
III. Our Work
Towards
Object-centric
Time-traveling
Debuggers
29
Improving Debugging Challenges:
Back to the example
1. Find the object
There is an
OrderedCollection
instantiated somewhere
during that call.
“I want to see how its
instance variables
evolve”
2. Specific object
debugging operations
assert:
splitOn:
equals:
Produces 3
OrderedCollection
30
Improving Debugging Challenges:
Back to the example
We made tools
to make this
easier!
assert:
splitOn:
equals:
Produces 3
OrderedCollection 1. Find the object
2. Specific object
debugging operations
31
NEW OOP DEBUGGING TOOL
I. SeekerOC
1. Easy objects finding and identification using TTQs
Lists all OrderedCollection objects instantiated during the test
32
NEW OOP DEBUGGING TOOL
I. SeekerOC
1. Easy objects finding and identification using TTQs
The listed objects can be directly inspected.
33
NEW OOP DEBUGGING TOOL
II. Enhanced Pharo Inspector
2. Easy object and variables tracking, using Object-Centric TTQs.
34
NEW OOP DEBUGGING TOOL
II. Enhanced Pharo Inspector
2. Easy object and variables tracking, using Object-Centric TTQs.
For SeekerOC and Enhanced Pharo Inspector.
○ Time-traveling back end providing deterministic reverse and replay.
○ Support for Time-Traveling Queries.
○ Express (new) Time-Traveling Queries.
35
Implementation,
Requirements
Repository url: https:/
/github.com/Willembrinck/SeekerOC-2022
36
Implementation
SeekerOC
Finding objects with TTQs
How it works?
Queries Menu
Query Results
37
Implementation
SeekerOC
Finding objects with TTQs
#OrderedCollection
Time-traveling debugger
Queries Context Menu
Iterable collection of
ProgramState
The command
executes a
Time-Traveling
Query
38
#OrderedCollection
Implementation
SeekerOC
Finding objects with TTQs
Time-traveling debugger
Queries Context Menu
“Iterable” collection of
ProgramState
What program states
are relevant?
What should be
included in the results?
From where to
extract the data?
39
#OrderedCollection
Implementation
SeekerOC
Finding objects with TTQs
Time-traveling debugger
Queries Context Menu
“Iterable” collection of
ProgramState
What program
states are relevant?
What should be
included in the results?
From where to
extract the data?
ProgramState:
API to access execution
data.
API Example:
Method Returns
context Context
isMessageSend Boolean
messageReceiver Object
40
Collected results are
displayed in the Query
Results table
Implementation
SeekerOC
Finding objects with TTQs
41
Implementation
Enhanced Pharo Inspector
Bound to an “OID”,
not an object
OID to write Object centric Time-Traveling Queries
42
Implementation
Enhanced Pharo Inspector
Object-centric TTQs, example
Bound to an “OID”, not an object
Queries uses OID for
selection predicate
#lastIndex
67
Our work
What other TTQs can boost object-centric
debugging?
Open research
subjects
What are TTQs limits to express
object-centric debugging operators?
Benefits of using such debuggers?
(Empirical experiments)
43
Perspective
44
1. New OOP Debugging Tools
SeekerOC
Time-Traveling Queries
Enhanced
Pharo
Inspector
&
2. How to join both techniques
Our work
Other TTQs for OC debugging?
Open research
subjects
TTQs limitations?
Benefits? (Experiments)
Contribution
Perspective
Towards Object-centric Time-traveling debuggers

Contenu connexe

Tendances

Functional Smalltalk
Functional SmalltalkFunctional Smalltalk
Functional Smalltalk
ESUG
 
Pharo 10 and beyond
 Pharo 10 and beyond Pharo 10 and beyond
Pharo 10 and beyond
ESUG
 
Pharo foreign function interface (FFI) by example by Esteban Lorenzano
Pharo foreign function interface (FFI) by example by Esteban LorenzanoPharo foreign function interface (FFI) by example by Esteban Lorenzano
Pharo foreign function interface (FFI) by example by Esteban Lorenzano
FAST
 
IO Management
IO ManagementIO Management
IO Management
J.T.A.JONES
 
Semaphore
SemaphoreSemaphore
Semaphore
sangrampatil81
 
Ext filesystem4
Ext filesystem4Ext filesystem4
Ext filesystem4
Neha Kulkarni
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
Yan Vugenfirer
 
Deadlock Slides
Deadlock SlidesDeadlock Slides
Deadlock Slides
sehrishishaq1
 
git and github
git and githubgit and github
git and github
Darren Oakley
 
Extending DevOps to Big Data Applications with Kubernetes
Extending DevOps to Big Data Applications with KubernetesExtending DevOps to Big Data Applications with Kubernetes
Extending DevOps to Big Data Applications with Kubernetes
Nicola Ferraro
 
Version Control with Git for Beginners
Version Control with Git for BeginnersVersion Control with Git for Beginners
Version Control with Git for Beginners
bryanbibat
 
Github - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsGithub - Git Training Slides: Foundations
Github - Git Training Slides: Foundations
Lee Hanxue
 
Loaders
LoadersLoaders
pip and virtualenv
pip and virtualenvpip and virtualenv
pip and virtualenv
amaneu
 
Git flow
Git flowGit flow
Git flow
DaeMyung Kang
 
Classical problems of process synchronization
Classical problems of process synchronizationClassical problems of process synchronization
Classical problems of process synchronization
sangrampatil81
 
Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6
Gabriela Bosetti
 
Git et les systèmes de gestion de versions
Git et les systèmes de gestion de versionsGit et les systèmes de gestion de versions
Git et les systèmes de gestion de versionsAlice Loeser
 
Compiler construction tools
Compiler construction toolsCompiler construction tools
Compiler construction tools
Akhil Kaushik
 
Basic Git Intro
Basic Git IntroBasic Git Intro
Basic Git Intro
Yoad Snapir
 

Tendances (20)

Functional Smalltalk
Functional SmalltalkFunctional Smalltalk
Functional Smalltalk
 
Pharo 10 and beyond
 Pharo 10 and beyond Pharo 10 and beyond
Pharo 10 and beyond
 
Pharo foreign function interface (FFI) by example by Esteban Lorenzano
Pharo foreign function interface (FFI) by example by Esteban LorenzanoPharo foreign function interface (FFI) by example by Esteban Lorenzano
Pharo foreign function interface (FFI) by example by Esteban Lorenzano
 
IO Management
IO ManagementIO Management
IO Management
 
Semaphore
SemaphoreSemaphore
Semaphore
 
Ext filesystem4
Ext filesystem4Ext filesystem4
Ext filesystem4
 
Introduction to Git
Introduction to GitIntroduction to Git
Introduction to Git
 
Deadlock Slides
Deadlock SlidesDeadlock Slides
Deadlock Slides
 
git and github
git and githubgit and github
git and github
 
Extending DevOps to Big Data Applications with Kubernetes
Extending DevOps to Big Data Applications with KubernetesExtending DevOps to Big Data Applications with Kubernetes
Extending DevOps to Big Data Applications with Kubernetes
 
Version Control with Git for Beginners
Version Control with Git for BeginnersVersion Control with Git for Beginners
Version Control with Git for Beginners
 
Github - Git Training Slides: Foundations
Github - Git Training Slides: FoundationsGithub - Git Training Slides: Foundations
Github - Git Training Slides: Foundations
 
Loaders
LoadersLoaders
Loaders
 
pip and virtualenv
pip and virtualenvpip and virtualenv
pip and virtualenv
 
Git flow
Git flowGit flow
Git flow
 
Classical problems of process synchronization
Classical problems of process synchronizationClassical problems of process synchronization
Classical problems of process synchronization
 
Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6
 
Git et les systèmes de gestion de versions
Git et les systèmes de gestion de versionsGit et les systèmes de gestion de versions
Git et les systèmes de gestion de versions
 
Compiler construction tools
Compiler construction toolsCompiler construction tools
Compiler construction tools
 
Basic Git Intro
Basic Git IntroBasic Git Intro
Basic Git Intro
 

Similaire à Towards Object-centric Time-traveling Debuggers

Object-Centric Debugging: a preview
Object-Centric Debugging: a previewObject-Centric Debugging: a preview
Object-Centric Debugging: a preview
Pharo
 
Human-centric Software Development Tools
Human-centric Software Development ToolsHuman-centric Software Development Tools
Human-centric Software Development Tools
Gail Murphy
 
Overview of Visible Ops Handbook
Overview of Visible Ops HandbookOverview of Visible Ops Handbook
Overview of Visible Ops Handbook
Dimas Ramadhani
 
Qtp Interview Questions
Qtp Interview QuestionsQtp Interview Questions
Qtp Interview Questions
kspanigra
 
Pragmatisk softwareinnovation, Ivan Aaen, AAU
Pragmatisk softwareinnovation, Ivan Aaen, AAUPragmatisk softwareinnovation, Ivan Aaen, AAU
Pragmatisk softwareinnovation, Ivan Aaen, AAU
InfinIT - Innovationsnetværket for it
 
Training of agile project management with scrum king leong lo (100188178)
Training of agile project management with scrum king leong lo (100188178)Training of agile project management with scrum king leong lo (100188178)
Training of agile project management with scrum king leong lo (100188178)
King Lo
 
Machine Learning for (DF)IR with Velociraptor: From Setting Expectations to a...
Machine Learning for (DF)IR with Velociraptor: From Setting Expectations to a...Machine Learning for (DF)IR with Velociraptor: From Setting Expectations to a...
Machine Learning for (DF)IR with Velociraptor: From Setting Expectations to a...
Chris Hammerschmidt
 
Training of agile project management with scrum king leong lo (100188178)
Training of agile project management with scrum king leong lo (100188178)Training of agile project management with scrum king leong lo (100188178)
Training of agile project management with scrum king leong lo (100188178)
King Lo
 
Training of agile project management with scrum king leong lo (100188178)
Training of agile project management with scrum king leong lo (100188178)Training of agile project management with scrum king leong lo (100188178)
Training of agile project management with scrum king leong lo (100188178)
King Lo
 
Exploratory testing
Exploratory testingExploratory testing
Exploratory testing
Huib Schoots
 
Challenges of Agile Qualification
Challenges of Agile QualificationChallenges of Agile Qualification
Challenges of Agile Qualification
AdaCore
 
Raising the Bar
Raising the BarRaising the Bar
Raising the Bar
Alexandru Bolboaca
 
Understand the AI-powered test automation with Magic Pod
Understand the AI-powered test automation with Magic PodUnderstand the AI-powered test automation with Magic Pod
Understand the AI-powered test automation with Magic Pod
Nozomi Ito
 
Introducción al Análisis y Diseño Orientado a Objetos
Introducción al Análisis y Diseño Orientado a ObjetosIntroducción al Análisis y Diseño Orientado a Objetos
Introducción al Análisis y Diseño Orientado a Objetos
Universidad de Occidente
 
TDD - Test Driven Dvelopment | Test First Design
TDD -  Test Driven Dvelopment | Test First DesignTDD -  Test Driven Dvelopment | Test First Design
TDD - Test Driven Dvelopment | Test First Design
Quang Nguyễn Bá
 
Training of agile project management with scrum king leong lo (100188178)
Training of agile project management with scrum king leong lo (100188178)Training of agile project management with scrum king leong lo (100188178)
Training of agile project management with scrum king leong lo (100188178)
King Lo
 
Lean Kanban Central Europe 2014: Beyond VSM: Understanding and Mapping Your P...
Lean Kanban Central Europe 2014: Beyond VSM: Understanding and Mapping Your P...Lean Kanban Central Europe 2014: Beyond VSM: Understanding and Mapping Your P...
Lean Kanban Central Europe 2014: Beyond VSM: Understanding and Mapping Your P...
azheglov
 
Se chapter 1,2,3 2 mark qa
Se chapter 1,2,3   2 mark  qaSe chapter 1,2,3   2 mark  qa
Se chapter 1,2,3 2 mark qa
Aruna M
 
Oose unit 3 ppt
Oose unit 3 pptOose unit 3 ppt
Oose unit 3 ppt
Dr VISU P
 
Training of agile project management with scrum king leong lo (100188178)
Training of agile project management with scrum king leong lo (100188178)Training of agile project management with scrum king leong lo (100188178)
Training of agile project management with scrum king leong lo (100188178)
King Lo
 

Similaire à Towards Object-centric Time-traveling Debuggers (20)

Object-Centric Debugging: a preview
Object-Centric Debugging: a previewObject-Centric Debugging: a preview
Object-Centric Debugging: a preview
 
Human-centric Software Development Tools
Human-centric Software Development ToolsHuman-centric Software Development Tools
Human-centric Software Development Tools
 
Overview of Visible Ops Handbook
Overview of Visible Ops HandbookOverview of Visible Ops Handbook
Overview of Visible Ops Handbook
 
Qtp Interview Questions
Qtp Interview QuestionsQtp Interview Questions
Qtp Interview Questions
 
Pragmatisk softwareinnovation, Ivan Aaen, AAU
Pragmatisk softwareinnovation, Ivan Aaen, AAUPragmatisk softwareinnovation, Ivan Aaen, AAU
Pragmatisk softwareinnovation, Ivan Aaen, AAU
 
Training of agile project management with scrum king leong lo (100188178)
Training of agile project management with scrum king leong lo (100188178)Training of agile project management with scrum king leong lo (100188178)
Training of agile project management with scrum king leong lo (100188178)
 
Machine Learning for (DF)IR with Velociraptor: From Setting Expectations to a...
Machine Learning for (DF)IR with Velociraptor: From Setting Expectations to a...Machine Learning for (DF)IR with Velociraptor: From Setting Expectations to a...
Machine Learning for (DF)IR with Velociraptor: From Setting Expectations to a...
 
Training of agile project management with scrum king leong lo (100188178)
Training of agile project management with scrum king leong lo (100188178)Training of agile project management with scrum king leong lo (100188178)
Training of agile project management with scrum king leong lo (100188178)
 
Training of agile project management with scrum king leong lo (100188178)
Training of agile project management with scrum king leong lo (100188178)Training of agile project management with scrum king leong lo (100188178)
Training of agile project management with scrum king leong lo (100188178)
 
Exploratory testing
Exploratory testingExploratory testing
Exploratory testing
 
Challenges of Agile Qualification
Challenges of Agile QualificationChallenges of Agile Qualification
Challenges of Agile Qualification
 
Raising the Bar
Raising the BarRaising the Bar
Raising the Bar
 
Understand the AI-powered test automation with Magic Pod
Understand the AI-powered test automation with Magic PodUnderstand the AI-powered test automation with Magic Pod
Understand the AI-powered test automation with Magic Pod
 
Introducción al Análisis y Diseño Orientado a Objetos
Introducción al Análisis y Diseño Orientado a ObjetosIntroducción al Análisis y Diseño Orientado a Objetos
Introducción al Análisis y Diseño Orientado a Objetos
 
TDD - Test Driven Dvelopment | Test First Design
TDD -  Test Driven Dvelopment | Test First DesignTDD -  Test Driven Dvelopment | Test First Design
TDD - Test Driven Dvelopment | Test First Design
 
Training of agile project management with scrum king leong lo (100188178)
Training of agile project management with scrum king leong lo (100188178)Training of agile project management with scrum king leong lo (100188178)
Training of agile project management with scrum king leong lo (100188178)
 
Lean Kanban Central Europe 2014: Beyond VSM: Understanding and Mapping Your P...
Lean Kanban Central Europe 2014: Beyond VSM: Understanding and Mapping Your P...Lean Kanban Central Europe 2014: Beyond VSM: Understanding and Mapping Your P...
Lean Kanban Central Europe 2014: Beyond VSM: Understanding and Mapping Your P...
 
Se chapter 1,2,3 2 mark qa
Se chapter 1,2,3   2 mark  qaSe chapter 1,2,3   2 mark  qa
Se chapter 1,2,3 2 mark qa
 
Oose unit 3 ppt
Oose unit 3 pptOose unit 3 ppt
Oose unit 3 ppt
 
Training of agile project management with scrum king leong lo (100188178)
Training of agile project management with scrum king leong lo (100188178)Training of agile project management with scrum king leong lo (100188178)
Training of agile project management with scrum king leong lo (100188178)
 

Plus de ESUG

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
ESUG
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
ESUG
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
ESUG
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
ESUG
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
ESUG
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
ESUG
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
ESUG
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
ESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
ESUG
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
ESUG
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
ESUG
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
ESUG
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
ESUG
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
ESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
ESUG
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
ESUG
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
ESUG
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ESUG
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
ESUG
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
ESUG
 

Plus de ESUG (20)

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
 

Dernier

Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
TaghreedAltamimi
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
Philip Schwarz
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative AnalysisOdoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Envertis Software Solutions
 
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
mz5nrf0n
 
UI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design SystemUI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design System
Peter Muessig
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
Hornet Dynamics
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
SOCRadar
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
rodomar2
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
TheSMSPoint
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
dakas1
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
Green Software Development
 
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
Bert Jan Schrijver
 
SMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API ServiceSMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API Service
Yara Milbes
 
What next after learning python programming basics
What next after learning python programming basicsWhat next after learning python programming basics
What next after learning python programming basics
Rakesh Kumar R
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
Peter Muessig
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
Marcin Chrost
 
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
Peter Muessig
 
Top 9 Trends in Cybersecurity for 2024.pptx
Top 9 Trends in Cybersecurity for 2024.pptxTop 9 Trends in Cybersecurity for 2024.pptx
Top 9 Trends in Cybersecurity for 2024.pptx
devvsandy
 
SQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure MalaysiaSQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure Malaysia
GohKiangHock
 

Dernier (20)

Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative AnalysisOdoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
 
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
 
UI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design SystemUI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design System
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
 
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
 
SMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API ServiceSMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API Service
 
What next after learning python programming basics
What next after learning python programming basicsWhat next after learning python programming basics
What next after learning python programming basics
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
 
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
 
Top 9 Trends in Cybersecurity for 2024.pptx
Top 9 Trends in Cybersecurity for 2024.pptxTop 9 Trends in Cybersecurity for 2024.pptx
Top 9 Trends in Cybersecurity for 2024.pptx
 
SQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure MalaysiaSQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure Malaysia
 

Towards Object-centric Time-traveling Debuggers

  • 1. 1 Towards Object-centric Time-traveling Debuggers Maximilian Ignacio Willembrinck Santander Steven Costiou Adrien Vanègue Anne Etien
  • 2. 2 Agenda I. Context II. Proposition III. Our Work Towards Object-centric Time-traveling Debuggers
  • 3. ● Debugging is a time-consuming task. ● Involves repetitive and tedious manual operations. 3 New debugging tools… Why?
  • 4. ● Debugging is a time-consuming task. ● Involves repetitive and tedious manual operations. 4 New debugging tools… Why? Debugging Valuable Activities
  • 5. ● Debugging is a time-consuming task. ● Involves repetitive and tedious manual operations. Debugging Valuable Activities 5 New debugging tools… Why?
  • 6. ● Debugging is a time-consuming task. ● Involves repetitive and tedious manual operations. 6 New debugging tools… Why? StepInto StepOver Breakpoints Repeat Debugging Valuable Activities
  • 7. 7 New debugging tools… Why? Debugging is hard. We saw an opportunity to improve the debugging experience.
  • 8. 8 Debugging Objects is Challenging: An Example assert: splitOn: equals: Produces 3 OrderedCollection
  • 9. 9 Debugging Objects is Challenging: An Example There is an OrderedCollection instantiated somewhere during that call. “I want to see how its instance variables evolve”
  • 10. 10 Debugging Objects is Challenging: An Example There is an OrderedCollection instantiated somewhere during that call. “I want to see how its instance variables evolve” 1. Find the object 2. Specific object debugging operations To instantiation instruction Conventional Debugging Many steps / uncomfortable conditional breakpoints
  • 11. 11 Debugging Objects is Challenging: An Example 1. Find the object 2. Specific object debugging operations Are there special tools to make these task easier?
  • 12. ● What is Object-centric debugging [1]? ○ Makes objects the focus of debugging operations. ○ Debugging operations are defined to answer developer questions related to runtime behavior of objects. ○ Object-centric Debugging operators examples: ■ Halt on read ■ Halt on write ■ Halt on call 12 Object-centric debugging?... [1] J. Ressia, A. Bergel, O. Nierstrasz, Object-centric debugging, in: Proceeding of the 34rd international conference on Software engineering, ICSE ’12, 2012.
  • 13. ● It helps debugging when: ○ Developers debugging questions are closer to the objects which model the domain. ○ Developers wants to follow an object behavior, avoiding traditional breakpoint management tediousness. e.g: “I want to see how its instance variables evolve” ● A prototype was presented and shown to be more effective supporting typical debugging tasks than traditional stack-oriented debugger. 13 Object-centric A promising debugging approach for OOP[1] [1] J. Ressia, A. Bergel, O. Nierstrasz, Object-centric debugging, in: Proceeding of the 34rd international conference on Software engineering, ICSE ’12, 2012.
  • 14. ● Scoping debugging operations (such as breakpoints) on specific object is difficult! ○ Devs must initially find such object identity first. ○ Manually step to the object of interest, or step through breakpoints hits to find it. 14 The problem...
  • 15. ● Scoping debugging operations (such as breakpoints) on specific object is difficult! ○ Devs must initially find such object identity first. ○ Manually step to the object of interest, or step through breakpoints hits to find it. 15 The problem... TEDIOUS AND ERROR-PRONE MANUAL WORK!
  • 16. ● Scoping debugging operations (such as breakpoints) on specific object is difficult! ○ Devs must initially find such object identity first. ○ Manually step to the object of interest, or step through breakpoints hits to find it. If only there was a way to fix this ... 16 The problem... TEDIOUS AND ERROR-PRONE MANUAL WORK!
  • 17. ● Main features: reverse a program execution and deterministic replay. ○ With these debuggers, any stepping error can be amended by stepping back. (Stepped too far? No need to restart, just take a step back). ○ Developers want to check a past state of the program? No need to restart, just reverse it. e.g: reverse to an object instantiation. 17 Time-traveling debuggers
  • 18. ● To the best of our knowledge, time-traveling solutions don't provide object-centric debugging operators. 18 There is another problem…
  • 19. ● Improves debugging experience in OOP. 19 Context summary Object Centric Debuggers Time-Traveling Debuggers ● Sill tedious and error prone. ● Improves tediousness, and debugging/stepping mistakes are less costly. ● So far, no support for object-centric debugging.
  • 20. ● Improves debugging experience in OOP. 20 Context summary Object Centric Debuggers ● Sill tedious and error prone. ? Time-Traveling Debuggers ● Improves tediousness, and debugging/stepping mistakes are less costly. ● So far, no support for object-centric debugging.
  • 21. 21 Agenda I. Context II. Proposition III. Our Work Towards Object-centric Time-traveling Debuggers
  • 22. 22 Our proposition ? ? ? 1. New debugging tools for OOP
  • 23. 23 Our proposition ? ? ? 1. New debugging tools for OOP 2. How to combine them? Second general question: How to combine them?
  • 24. 24 How to combine them? Our answer: Time-Traveling Queries How?
  • 25. 25 Combining both techniques Time-Traveling Queries* (*) M. Willembrinck, S. Costiou, A. Etien, S. Ducasse. Time-Traveling Debugging Queries: Faster Program Exploration. International Conference on Software Quality, Reliability, and Security, Dec 2021, Hainan Island, China. What is the value of this variable during execution? On step 1 value changed from nil to 100 On step 4 value changed from 100 to 200 On step 40 value changed from 200 to 0 …
  • 26. 26 Combining both techniques Time-Traveling Queries* Find execution data and explore your execution conveniently from the Query Results (*) M. Willembrinck, S. Costiou, A. Etien, S. Ducasse. Time-Traveling Debugging Queries: Faster Program Exploration. International Conference on Software Quality, Reliability, and Security, Dec 2021, Hainan Island, China.
  • 27. We developed SeekerOC and an Enhanced Pharo Inspector to improve the debugging experience. Made for Pharo 10. 27 Combining both techniques With Time-Traveling Queries
  • 28. 28 Agenda I. Context II. Proposition III. Our Work Towards Object-centric Time-traveling Debuggers
  • 29. 29 Improving Debugging Challenges: Back to the example 1. Find the object There is an OrderedCollection instantiated somewhere during that call. “I want to see how its instance variables evolve” 2. Specific object debugging operations assert: splitOn: equals: Produces 3 OrderedCollection
  • 30. 30 Improving Debugging Challenges: Back to the example We made tools to make this easier! assert: splitOn: equals: Produces 3 OrderedCollection 1. Find the object 2. Specific object debugging operations
  • 31. 31 NEW OOP DEBUGGING TOOL I. SeekerOC 1. Easy objects finding and identification using TTQs Lists all OrderedCollection objects instantiated during the test
  • 32. 32 NEW OOP DEBUGGING TOOL I. SeekerOC 1. Easy objects finding and identification using TTQs The listed objects can be directly inspected.
  • 33. 33 NEW OOP DEBUGGING TOOL II. Enhanced Pharo Inspector 2. Easy object and variables tracking, using Object-Centric TTQs.
  • 34. 34 NEW OOP DEBUGGING TOOL II. Enhanced Pharo Inspector 2. Easy object and variables tracking, using Object-Centric TTQs.
  • 35. For SeekerOC and Enhanced Pharo Inspector. ○ Time-traveling back end providing deterministic reverse and replay. ○ Support for Time-Traveling Queries. ○ Express (new) Time-Traveling Queries. 35 Implementation, Requirements Repository url: https:/ /github.com/Willembrinck/SeekerOC-2022
  • 36. 36 Implementation SeekerOC Finding objects with TTQs How it works? Queries Menu Query Results
  • 37. 37 Implementation SeekerOC Finding objects with TTQs #OrderedCollection Time-traveling debugger Queries Context Menu Iterable collection of ProgramState The command executes a Time-Traveling Query
  • 38. 38 #OrderedCollection Implementation SeekerOC Finding objects with TTQs Time-traveling debugger Queries Context Menu “Iterable” collection of ProgramState What program states are relevant? What should be included in the results? From where to extract the data?
  • 39. 39 #OrderedCollection Implementation SeekerOC Finding objects with TTQs Time-traveling debugger Queries Context Menu “Iterable” collection of ProgramState What program states are relevant? What should be included in the results? From where to extract the data? ProgramState: API to access execution data. API Example: Method Returns context Context isMessageSend Boolean messageReceiver Object
  • 40. 40 Collected results are displayed in the Query Results table Implementation SeekerOC Finding objects with TTQs
  • 41. 41 Implementation Enhanced Pharo Inspector Bound to an “OID”, not an object OID to write Object centric Time-Traveling Queries
  • 42. 42 Implementation Enhanced Pharo Inspector Object-centric TTQs, example Bound to an “OID”, not an object Queries uses OID for selection predicate #lastIndex 67
  • 43. Our work What other TTQs can boost object-centric debugging? Open research subjects What are TTQs limits to express object-centric debugging operators? Benefits of using such debuggers? (Empirical experiments) 43 Perspective
  • 44. 44 1. New OOP Debugging Tools SeekerOC Time-Traveling Queries Enhanced Pharo Inspector & 2. How to join both techniques Our work Other TTQs for OC debugging? Open research subjects TTQs limitations? Benefits? (Experiments) Contribution Perspective Towards Object-centric Time-traveling debuggers