Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/3546918.3546920acmotherconferencesArticle/Chapter ViewAbstractPublication PagesisstaConference Proceedingsconference-collections
research-article

Event-Based Out-of-Place Debugging

Published: 30 November 2022 Publication History

Abstract

Debugging IoT applications is challenging due to the hardware constraints of IoT devices, making advanced techniques like record-replay debugging impractical. As a result, programmers often rely on manual resets or inefficient and time-consuming debugging techniques such as printf. Although simulators can help in that regard, their applicability is limited because they fall short of accurately simulating and reproducing the runtime conditions where bugs appear. In this work, we explore a novel debugging approach called event-based out-of-place debugging in which developers can capture a remotely running program and debug it locally on a (more powerful) machine. Our approach thus provides rich debugging features (e.g., step-back) that normally would not run on the hardware restricted devices. Two different strategies are offered to deal with resources which cannot be easily transferred (e.g., sensors): pull-based (akin to remote debugging), or push-based (where data updates are pushed to developer’s machine during the debug session). We present EDWARD, an event-based out-of-place debugger prototype, implemented by extending the WARDuino WebAssembly microcontroller Virtual Machine, that has been integrated into Visual Studio Code. To validate our approach, we show how our debugger helps uncover IoT bugs representative of real-world applications through several use-case applications. Initial benchmarks show that event-based out-of-place debugging can drastically reduce debugging latency.

References

[1]
Luigi Atzori, Antonio Iera, and Giacomo Morabito. 2010. The Internet of Things: A Survey. Computer Networks 54, 15 (Oct. 2010), 2787–2805. https://doi.org/10.1016/j.comnet.2010.05.010
[2]
Dominik Aumayr, Stefan Marr, Clément Béra, Elisa Gonzalez Boix, and Hanspeter Mössenböck. 2018. Efficient and deterministic record & replay for actor languages. In Proceedings of the 15th International Conference on Managed Languages & Runtimes - ManLang ’18. ACM Press. https://doi.org/10.1145/3237009.3237015
[3]
Andrew Banks and Rahul Gupta. 2014. MQTT Version 3.1. 1. OASIS standard 29(2014).
[4]
Earl T. Barr and Mark Marron. 2014. Tardis: Affordable Time-Travel Debugging in Managed Runtimes. In Proceedings of the 2014 ACM International Conference on Object Oriented Programming Systems Languages and Applications (OOPSLA ’14) (Portland, Oregon, USA) (OOPSLA ’14). Association for Computing Machinery, New York, NY, USA, 67–82. https://doi.org/10.1145/2660193.2660209
[5]
Yunji Chen, Shijin Zhang, Qi Guo, Ling Li, Ruiyang Wu, and Tianshi Chen. 2015. Deterministic Replay: A Survey. ACM Comput. Surv. 48, 2, Article 17 (Sept. 2015), 47 pages. https://doi.org/10.1145/2790077
[6]
CodeMagic LTD.2022. Welcome to Wokwi!https://docs.wokwi.com/?utm_source=wokwi. Accessed: May 12, 2022.
[7]
Wasm3 Debug. 2020. Espruino. https://github.com/wasm3/wasm-debug. Accessed: May 12, 2022.
[8]
Jakob Engblom. 2012. A review of reverse debugging. In Proceedings of the 2012 System, Software, SoC and Silicon Debug Conference. 1–6.
[9]
Espruino. 2021. Espruino. https://www.espruino.com/. Accessed: May 12, 2022.
[10]
Kaiming Fang and Guanhua Yan. 2020. IoTReplay: Troubleshooting COTS IoT Devices with Record and Replay. In 2020 IEEE/ACM Symposium on Edge Computing (SEC). 193–205. https://doi.org/10.1109/SEC50012.2020.00033
[11]
Damien George. 2021. MicroPython. https://micropython.org/. Accessed: May 12, 2022.
[12]
Dimitrios Giouroukis, Julius Hülsmann, Janis von Bleichert, Morgan Geldenhuys, Tim Stullich, Felipe Oliveira Gutierrez, Jonas Traub, Kaustubh Beedkar, and Volker Markl. 2019. Resense: Transparent Record and Replay of Sensor Data in the Internet of Things. In 22nd International Conference on Extending Database Technology (EDBT).
[13]
Robbert Gurdeep Singh and Christophe Scholliers. 2019. WARDuino: a dynamic WebAssembly virtual machine for programming microcontrollers. In Proceedings of the 16th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes - MPLR 2019. ACM Press, 27–36. https://doi.org/10.1145/3357390.3361029
[14]
Andreas Haas, Andreas Rossberg, Derek L. Schuff, Ben L. Titzer, Michael Holman, Dan Gohman, Luke Wagner, Alon Zakai, and JF Bastien. 2017. Bringing the Web up to Speed with WebAssembly. In Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation (Barcelona, Spain) (PLDI 2017). Association for Computing Machinery, New York, NY, USA, 185–200. https://doi.org/10.1145/3062341.3062363
[15]
Gabor Kecskemeti, Giuliano Casale, Devki Nandan Jha, Justin Lyon, and Rajiv Ranjan. 2017. Modelling and Simulation Challenges in Internet of Things. IEEE Cloud Computing 4, 1 (2017), 62–69. https://doi.org/10.1109/MCC.2017.18
[16]
M5STACK. 2021. M5StickC. https://docs.m5stack.com/en/core/m5stickc/. Accessed: May 12, 2022.
[17]
Amir Makhshari and Ali Mesbah. 2021. IoT Bugs and Development Challenges. In 2021 IEEE/ACM 43rd International Conference on Software Engineering (ICSE). 460–472. https://doi.org/10.1109/ICSE43902.2021.00051
[18]
Matteo Marra, Guillermo Polito, and Elisa Gonzalez Boix. 2021. Practical Online Debugging of Spark-like Applications. In 2021 IEEE 21st International Conference on Software Quality, Reliability and Security (QRS). 620–631. https://doi.org/10.1109/QRS54544.2021.00072
[19]
Matteo Marra, Guillermo Polito, and Elisa Gonzalez Boix. 2018. Out-Of-Place debugging: a debugging architecture to reduce debugging interference. The Art, Science, and Engineering of Programming 3, 2 (nov 2018). https://doi.org/10.22152/programming-journal.org/2019/3/3
[20]
J.W. McBride. 1989. Electrical contact bounce in medium-duty contacts. IEEE Transactions on Components, Hybrids, and Manufacturing Technology 12, 1 (March 1989), 82–90. https://doi.org/10.1109/33.19016
[21]
Charles E. McDowell and David P. Helmbold. 1989. Debugging Concurrent Programs. Comput. Surveys 21, 4 (Dec. 1989), 593–622. https://doi.org/10.1145/76894.76897
[22]
Microsoft. 2022. Visual Studio Code: Extension API. https://code.visualstudio.com/api. Accessed: May 12, 2022.
[23]
Armando Miraglia, Dirk Vogt, Herbert Bos, Andy Tanenbaum, and Cristiano Giuffrida. 2016. Peeking into the Past: Efficient Checkpoint-Assisted Time-Traveling Debugging. In 2016 IEEE 27th International Symposium on Software Reliability Engineering (ISSRE). 455–466. https://doi.org/10.1109/ISSRE.2016.9
[24]
David Pacheco. 2011. Postmortem Debugging in Dynamic Environments. Commun. ACM 54, 12 (Dec. 2011), 44–51. https://doi.org/10.1145/2043174.2043189
[25]
Michael Perscheid, Benjamin Siegmund, Marcel Taeumel, and Robert Hirschfeld. 2016. Studying the advancement in debugging practice of professional software developers.Software Quality Journal 25, 1 (2016), 83–110. http://dblp.uni-trier.de/db/journals/sqj/sqj25.html#PerscheidSTH17
[26]
Carlos Rojas Castillo, Matteo Marra, Jim Bauwens, and Elisa Gonzalez Boix. 2021. WOOD: Extending a WebAssembly VM with Out-of-Place Debugging for IoT applications. In Proceedings of the 13th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages(Chicago IL, USA) (VMIL 2021). pre-print http://soft.vub.ac.be/Publications/2021/vub-tr-soft-21-11.pdf.
[27]
TOPLLab. 2021. WARDuino-VSCode. https://github.com/TOPLLab/WARDuino-VSCode. Accessed: May 12, 2022.
[28]
Wasm3. 2020. Wasm3. https://github.com/wasm3/wasm3. Accessed: May 12, 2022.
[29]
WebAssembly. 2022. WABT: The WebAssembly Binary Toolkit. https://github.com/WebAssembly/wabt. Accessed: May 12, 2022.

Cited By

View all
  • (2024)Concolic Multiverse DebuggingProceedings of the 2nd ACM International Workshop on Future Debugging Techniques10.1145/3678720.3685318(28-29)Online publication date: 13-Sep-2024
  • (2024)Language-Agnostic Debugging for MicrocontrollersProceedings of the 2nd ACM International Workshop on Future Debugging Techniques10.1145/3678720.3685317(22-27)Online publication date: 13-Sep-2024
  • (2024) LatchScience of Computer Programming10.1016/j.scico.2024.103157238:COnline publication date: 1-Dec-2024

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Other conferences
MPLR '22: Proceedings of the 19th International Conference on Managed Programming Languages and Runtimes
September 2022
161 pages
ISBN:9781450396967
DOI:10.1145/3546918
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 30 November 2022

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Debugger
  2. Internet-of-Things
  3. Out-of-place debugging
  4. Virtual Machine
  5. WARDuino
  6. WebAssembly

Qualifiers

  • Research-article
  • Research
  • Refereed limited

Funding Sources

Conference

MPLR '22

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)47
  • Downloads (Last 6 weeks)1
Reflects downloads up to 25 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2024)Concolic Multiverse DebuggingProceedings of the 2nd ACM International Workshop on Future Debugging Techniques10.1145/3678720.3685318(28-29)Online publication date: 13-Sep-2024
  • (2024)Language-Agnostic Debugging for MicrocontrollersProceedings of the 2nd ACM International Workshop on Future Debugging Techniques10.1145/3678720.3685317(22-27)Online publication date: 13-Sep-2024
  • (2024) LatchScience of Computer Programming10.1016/j.scico.2024.103157238:COnline publication date: 1-Dec-2024

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

HTML Format

View this article in HTML Format.

HTML Format

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media