Mercury: Properties and Design of a Remote Debugging Solution using Reflection

By: Nick Papoulias, Noury Bouraqadi, Luc Fabresse, Stéphane Ducasse, Marcus Denker

Abstract

Remote debugging facilities are a technical necessity for devices that lack appropriate input/output interfaces (display, keyboard, mouse) for programming (e.g. smartphones, mobile robots) or are simply unreachable for local development (e.g. cloud-servers). Yet remote debugging solutions can prove awkward to use due to re-deployments. Empirical studies show us that on average 10.5 minutes per coding hour (over five 40-hour work weeks per year) are spent for re-deploying applications (including re-deployments during debugging). Moreover current solutions lack facilities that would otherwise be available in a local setting because it is difficult to reproduce them remotely. Our work identifies three desirable properties that a remote debugging solution should exhibit, namely: run-time evolution, semantic instrumentation and adaptable distribution. Given these properties we propose and validate Mercury, a remote debugging model based on reflection. Mercury supports run-time evolution through a causally connected remote meta-level, semantic instrumentation through the reification of the underlying execution environment and adaptable distribution through a modular architecture of the debugging middleware.

Keywords

Remote Debugging, Reflection, Mirrors, Run-Time Evolution, Semantic Instrumentation, Adaptable Distribution, Agile Development

Cite as:

Nick Papoulias, Noury Bouraqadi, Luc Fabresse, Stéphane Ducasse, Marcus Denker, “Mercury: Properties and Design of a Remote Debugging Solution using Reflection”, Journal of Object Technology, Volume 14, no. 2 (May 2015), pp. 1:1-36, doi:10.5381/jot.2015.14.2.a1.

PDF | DOI | BiBTeX | Tweet this | Post to CiteULike | Share on LinkedIn

The JOT Journal   |   ISSN 1660-1769   |   DOI 10.5381/jot   |   AITO   |   Open Access   |    Contact