Debugging Cyber-Physical Systems with Pharo: An Experience Report

Cyber-Physical Systems (CPS) integrate sensors and actuators to collect data and control entities in the physical world. Debugging CPS systems is hard due to the time-sensitive nature of a distributed applications combined with the lack of control on the surrounding physical environment. This makes bugs in CPS systems hard to reproduce and thus to fix. In this context, on-line debugging techniques are helpful because the debugger is connected to the device when an exception or crash occurs. This paper reports on our experiences on applying two different on-line debugging techniques for a CPS system: remote debugging using the Pharo remote debugger and our IDRA debugger. In contrast to traditional remote debugging, IDRA allows to on-line debug an application locally in another client machine by reproducing the runtime context where the bug manifested. Our qualitative evaluation shows that IDRA provides almost the same interaction capabilities than Pharo's remote debugger and is less intrusive when performing hot-modifications. Our benchmarks also show that IDRA is significantly faster than the Pharo remote debugger, although it increases the amount of data transferred over the network.

[1]  Stéphane Ducasse,et al.  Representing Code History with Development Environment Events , 2013, ArXiv.

[2]  Stéphane Ducasse,et al.  Clustered serialization with fuel , 2011, IWST '11.

[3]  Charles E. McDowell,et al.  Debugging concurrent programs , 1989, ACM Comput. Surv..

[4]  Giovanni Vigna,et al.  Understanding Code Mobility , 1998, IEEE Trans. Software Eng..

[5]  M. P. Sebastian,et al.  A Classification of the Debugging Techniques of Wireless Sensor Networks , 2012, 2012 International Conference on Advances in Computing and Communications.

[6]  Gilad Bracha,et al.  Mirrors: design principles for meta-level facilities of object-oriented programming languages , 2004, OOPSLA.

[7]  Stéphane Ducasse,et al.  Mercury: Properties and Design of a Remote Debugging Solution using Reflection , 2015, J. Object Technol..

[8]  Miryung Kim,et al.  BigDebug: Debugging Primitives for Interactive Big Data Processing in Spark , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE).

[9]  Gian Pietro Picco,et al.  Understanding code mobility , 1998, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[10]  D. R. McGregor,et al.  Stabdump—a dump interpreter program to assist debugging , 1980, Softw. Pract. Exp..