SlideShare a Scribd company 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

More Related Content

What's hot

Git 입문자를 위한 가이드
Git 입문자를 위한 가이드Git 입문자를 위한 가이드
Git 입문자를 위한 가이드
chandler0201
 
Applications in Pharo
Applications in PharoApplications in Pharo
Applications in Pharo
ESUG
 
Bitbucket
BitbucketBitbucket
Bitbucket
Okba Mahdjoub
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らす
Shunsuke Maeda
 
Trunk based development for Beginners
Trunk based development for BeginnersTrunk based development for Beginners
Trunk based development for Beginners
Nebulaworks
 
Branching and Merging Practices
Branching and Merging Practices Branching and Merging Practices
Branching and Merging Practices
Rajesh Kumar
 
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
VirtualTech Japan Inc.
 
Git from SVN
Git from SVNGit from SVN
Git from SVN
Justin Yoo
 
Version control system
Version control systemVersion control system
Version control system
Aryman Gautam
 
Intro to Git, GitHub, and BitBucket
Intro to Git, GitHub, and BitBucketIntro to Git, GitHub, and BitBucket
Gitops Hands On
Gitops Hands OnGitops Hands On
Gitops Hands On
Brice Fernandes
 
[NDC16] Effective Git
[NDC16] Effective Git[NDC16] Effective Git
[NDC16] Effective Git
Chanwoong Kim
 
[Golang] 以 Mobile App 工程師視角,帶你進入 Golang 的世界 (Introduction of GoLang)
[Golang] 以 Mobile App 工程師視角,帶你進入 Golang 的世界 (Introduction of GoLang) [Golang] 以 Mobile App 工程師視角,帶你進入 Golang 的世界 (Introduction of GoLang)
[Golang] 以 Mobile App 工程師視角,帶你進入 Golang 的世界 (Introduction of GoLang)
Johnny Sung
 
Spring starterによるSpring Boot Starter
Spring starterによるSpring Boot StarterSpring starterによるSpring Boot Starter
Spring starterによるSpring Boot Starter
Ryosuke Uchitate
 
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
민태 김
 
Git and GitHub for Documentation
Git and GitHub for DocumentationGit and GitHub for Documentation
Git and GitHub for Documentation
Anne Gentle
 
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
Miles Chou
 
和艦長一起玩轉 GitLab & GitLab Workflow
和艦長一起玩轉 GitLab & GitLab Workflow和艦長一起玩轉 GitLab & GitLab Workflow
和艦長一起玩轉 GitLab & GitLab Workflow
Chen Cheng-Wei
 
猫にはわかる暗号技術 1
猫にはわかる暗号技術 1猫にはわかる暗号技術 1
猫にはわかる暗号技術 1
Yu Ogawa
 

What's hot (20)

Git 입문자를 위한 가이드
Git 입문자를 위한 가이드Git 입문자를 위한 가이드
Git 입문자를 위한 가이드
 
Applications in Pharo
Applications in PharoApplications in Pharo
Applications in Pharo
 
Bitbucket
BitbucketBitbucket
Bitbucket
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らす
 
Trunk based development for Beginners
Trunk based development for BeginnersTrunk based development for Beginners
Trunk based development for Beginners
 
Branching and Merging Practices
Branching and Merging Practices Branching and Merging Practices
Branching and Merging Practices
 
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
OpenStackで始めるクラウド環境構築入門(Horizon 基礎編)
 
Git from SVN
Git from SVNGit from SVN
Git from SVN
 
Introduction to Git and Github
Introduction to Git and GithubIntroduction to Git and Github
Introduction to Git and Github
 
Version control system
Version control systemVersion control system
Version control system
 
Intro to Git, GitHub, and BitBucket
Intro to Git, GitHub, and BitBucketIntro to Git, GitHub, and BitBucket
Intro to Git, GitHub, and BitBucket
 
Gitops Hands On
Gitops Hands OnGitops Hands On
Gitops Hands On
 
[NDC16] Effective Git
[NDC16] Effective Git[NDC16] Effective Git
[NDC16] Effective Git
 
[Golang] 以 Mobile App 工程師視角,帶你進入 Golang 的世界 (Introduction of GoLang)
[Golang] 以 Mobile App 工程師視角,帶你進入 Golang 的世界 (Introduction of GoLang) [Golang] 以 Mobile App 工程師視角,帶你進入 Golang 的世界 (Introduction of GoLang)
[Golang] 以 Mobile App 工程師視角,帶你進入 Golang 的世界 (Introduction of GoLang)
 
Spring starterによるSpring Boot Starter
Spring starterによるSpring Boot StarterSpring starterによるSpring Boot Starter
Spring starterによるSpring Boot Starter
 
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
버전관리를 들어본적 없는 사람들을 위한 DVCS - Git
 
Git and GitHub for Documentation
Git and GitHub for DocumentationGit and GitHub for Documentation
Git and GitHub for Documentation
 
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
2019/7/27 先別開 Branch 了,你聽過 Feature Toggle 嗎?
 
和艦長一起玩轉 GitLab & GitLab Workflow
和艦長一起玩轉 GitLab & GitLab Workflow和艦長一起玩轉 GitLab & GitLab Workflow
和艦長一起玩轉 GitLab & GitLab Workflow
 
猫にはわかる暗号技術 1
猫にはわかる暗号技術 1猫にはわかる暗号技術 1
猫にはわかる暗号技術 1
 

Similar to 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 testingHuib Schoots
 
Challenges of Agile Qualification
Challenges of Agile QualificationChallenges of Agile Qualification
Challenges of Agile QualificationAdaCore
 
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
 

Similar to 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)
 

More from 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
 

More from 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
 

Recently uploaded

Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi ArabiaTop 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Yara Milbes
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Globus
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
Aftab Hussain
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
abdulrafaychaudhry
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
wottaspaceseo
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
Shane Coughlan
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
takuyayamamoto1800
 
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptxText-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
ShamsuddeenMuhammadA
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
Globus
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
Neo4j
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
Boni García
 

Recently uploaded (20)

Top 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi ArabiaTop 7 Unique WhatsApp API Benefits | Saudi Arabia
Top 7 Unique WhatsApp API Benefits | Saudi Arabia
 
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of CodeA Study of Variable-Role-based Feature Enrichment in Neural Models of Code
A Study of Variable-Role-based Feature Enrichment in Neural Models of Code
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
Pro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp BookPro Unity Game Development with C-sharp Book
Pro Unity Game Development with C-sharp Book
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptxText-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
Text-Summarization-of-Breaking-News-Using-Fine-tuning-BART-Model.pptx
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
GlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote sessionGlobusWorld 2024 Opening Keynote session
GlobusWorld 2024 Opening Keynote session
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
 

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