Time-travel programming: programming language support for interacting with past executions
department or school: Science, Faculty of
department or school: Computer Science, Department of
data provider: DSpace
degree campus: UBCV
creator: Salkeld, Robin
issued: 2018-05-24T16:00:46Z
issued: 2018
related degree: Doctor of Philosophy - PhD
degree grantor: University of British Columbia
description: Because software so often behaves unexpectedly or fails only in production environments, several recent tools from both industry and academia record data about execution for the benefit of post-hoc analysis. Debugging on these data instead of a live program is much more difficult, however, because the semantic abstractions provided by the programming language are no longer available. Many post-hoc analysis tools process this data through additional reflection-based code or domain-specific query languages, but do not recover the expressive power of the original programming language. This thesis proposes the concept of time-travel programming, which we define as simulating the execution of additional code in the same programming language as if it were present in the past environment of recorded data. Furthermore, we show that the aspect-oriented programming (AOP) paradigm provides a natural mechanism for specifying this additional execution, and allows us to reuse established semantics and implementations. We provide evidence of this technique’s flexibility, feasibility and effectiveness through two implementations: one an interpreter for an extremely simple AOP language in the style of a core calculus, and one for the AspectJ programming language. We evaluate flexibility via applying the implementations to multiple execution recording formats, feasibility by showing the AspectJ implementation is performant enough for post-hoc analysis, and effectiveness by demonstrating that evaluating new and existing aspects retroactively can be used to address common post-hoc analysis tasks.
aggregated CHO: https://circle.library.ubc.ca/rest/handle/2429/66058
note: Time-travel ProgrammingProgramming Language Support for Interacting with Past ExecutionsbyRobin SalkeldBMath, University of Waterloo, 2005A THESIS SUBMITTED IN PARTIAL FULFILLMENTOF THE REQUIREMENTS FOR THE DEGREE OFDoctor of PhilosophyinTHE FACULTY OF GRADUATE AND POSTDOCTORALSTUDIES(Computer Science)The University Of British Columbia(Vancouver)May 2018© Robin Salkeld, 2018The following individuals certify that they have read, and recommend to the Faculty of Graduate and Postdoctoral Studies for acceptance, the dissertation entitled: Time-travel Programming: Programming Language Support for Interacting with Past Executions submitted by Robin Salkeld in partial fulfillment of the requirements for the degree of Doctor of Philosophy in Computer Science Examining Committee: Gregor Kiczales Supervisor Andrew Warfield Supervisory Committee Member Ronald Garcia Supervisory Committee Member Norm Hutchinson University Examiner Sathish Gopalakrishnan University Examiner Additional Supervisory Committee Members: Supervisory Committee Member Supervisory Committee Member AbstractBecause software so often behaves unexpectedly or fails only in production envi-ronments, several recent tools from both industry and academia record data aboutexecution for the benefit of post-hoc analysis. Debugging on these data instead ofa live program is much more difficult, however, because the semantic abstractionsprovided by the programming language are no longer available. Many post-hocanalysis tools process this data through additional reflection-based code or domain-specific query languages, but do not recover the expressive power of the originalprogramming language.This thesis proposes the concept of time-travel programming, which we defineas simulating the execution of additional code in the same programming languageas if it were present in the past environment of recorded data. Furthermore, weshow that the aspect-oriented programming (AOP) paradigm provides a naturalmechanism for specifyin…
has type: Thesis/Dissertation
date issued: 2018-09
is shown at: 10.14288/1.0367029
language: eng
degree discipline: Computer Science
provider: Vancouver : University of British Columbia Library
publisher: University of British Columbia
rights: Attribution-NonCommercial-NoDerivatives 4.0 International
rights URI: http://creativecommons.org/licenses/by-nc-nd/4.0/
scholar level: Graduate
type: Text
identifier URI: http://hdl.handle.net/2429/66058