UittrekselInternet of Things (IoT) enables collaboration between humans and a diverse range of machines including embedded devices and sensors. Software development of IoT
applications is challenging given the distributed nature of the applications and the
limited resources of some devices. This thesis focuses on debugging support, an
integral part of software development.
Popular offline debugging techniques like logs and dumps are not suitable for
IoT as they impose too much overhead on devices and they often miss contextual
information on the bug. Offline debuggers like record and replay can aid debugging
by deterministically re-executing application until the root cause of the bug is found
providing the bug is captured. However, they also impose overhead and, more
importantly, they cannot deal with non-deterministic external sources as provided
by IoT sensors. Online debugging seems more suitable for IoT since they can deal
with external sources, but suffer from probe-effect and non-reproducibility issues
caused by high-latency.
In this thesis, we propose out-of-things debugging, an extension of out-of-place
debugging designed for IoT applications. The debugger enables remote debugging
with low latency by moving the state of a running IoT application to the developer’s
machine, so that the application can be locally debugged. To adapt to the IoT environment, it supports a customisable debugging experience by means of policies to help debug (production) IoT applications, while maintaining a low-overhead on re-
source constrained devices. We implement our approach in WOOD i.e. an extension
on WARDuino virtual machine that executes Web Assembly on embedded devices.
We validate our approach by means of quantitative and qualitative experiments.
Six quantitative experiments focused on measuring both network overhead, and ex-
ecution speed. For the latter, we compared WOOD to WARDuino and Espruino on
six task intensive applications. One qualitative experiment focused on debugging a
production application which contains a bug typically encountered in IoT. From our
evaluation, we can conclude that our out-of-things debugger exhibits great poten-
tial in debugging IoT production applications; (1) the debugger remains functional
within the hardware boundaries of the restricted devices and reaches expected per-
formance, (2) the policies and local debugging alleviate the total debug overhead on
those devices and thus potentially extending their life span, (3) and the always-on
debug policies keep production applications running if needed
|Begeleider||Elisa Gonzalez Boix (Promotor), Matteo Marra (Advisor) & Jim Bauwens (Advisor)|