ABSTRACT
The rise in prevalence of Internet of Things (IoT) technologies has encouraged more people to prototype and build custom internet connected devices based on low power microcontrollers. While well-developed tools exist for debugging network communication for desktop and web applications, it can be difficult for developers of networked embedded systems to figure out why their network code is failing due to the limited output affordances of embedded devices. This paper presents WiFröst, a new approach for debugging these systems using instrumentation that spans from the device itself, to its communication API, to the wireless router and back-end server. WiFröst automatically collects this data, displays it in a web-based visualization, and highlights likely issues with an extensible suite of checks based on analysis of recorded execution traces.
Supplemental Material
- Arduino -- wifi. https://www.arduino.cc/en/Reference/WiFi. Accessed 04-04--2018.Google Scholar
- Available memory -- arduino playground. https://playground.arduino.cc/Code/AvailableMemory. Accessed 04-04--2018.Google Scholar
- Ntp: The network time protocol. http://www.ntp.org/index.html. Accessed 04-04--2018.Google Scholar
- Becker, R. A., and Cleveland, W. S. Brushing scatterplots. Technometrics 29, 2 (1987), 127--142. Google ScholarDigital Library
- Bederson, B. B., Meyer, J., and Good, L. Jazz: an extensible zoomable user interface graphics toolkit in java. In Proceedings of the 13th annual ACM symposium on User interface software and technology, ACM (2000), 171--180. Google ScholarDigital Library
- Booth, T., Stumpf, S., Bird, J., and Jones, S. Crossed wires: Investigating the problems of end-user developers in a physical computing task. In Proceedings of the 2016 CHI Conference on Human Factors in Computing Systems, ACM (2016), 3485--3497. Google ScholarDigital Library
- Burg, B., Bailey, R., Ko, A. J., and Ernst, M. D. Interactive record/replay for web application debugging. In Proceedings of the 26th annual ACM symposium on User interface software and technology, ACM (2013), 473--484. Google ScholarDigital Library
- Chanda, A., Cox, A. L., and Zwaenepoel, W. Whodunit: Transactional profiling for multi-tier applications. In ACM SIGOPS Operating Systems Review, vol. 41, ACM (2007), 17--30. Google ScholarDigital Library
- Chang, K. S.-P., and Myers, B. A. Gneiss: spreadsheet programming using structured web service data. Journal of Visual Languages & Computing, http://www. sciencedirect. com/science/article/pii/S1045926X16300994 (2016). Google ScholarDigital Library
- Chen, M. Y., Kiciman, E., Fratkin, E., Fox, A., and Brewer, E. Pinpoint: Problem determination in large, dynamic internet services. In Dependable Systems and Networks, 2002. DSN 2002. Proceedings. International Conference on, IEEE (2002), 595--604. Google ScholarDigital Library
- Chiang, H., Hong, J., Kiningham, K., Riliskis, L., Levis, P., and Horowitz, M. Tethys--an energy harvesting networked water flow sensor. In Proceedings of the Third International Conference on Internet-of-Things Design and Implementation, ACM (2018).Google Scholar
- Drew, D., Newcomb, J. L., McGrath, W., Maksimovic, F., Mellis, D., and Hartmann, B. The toastboard: Ubiquitous instrumentation and automated checking of breadboarded circuits. In Proceedings of the 29th Annual Symposium on User Interface Software and Technology, ACM (2016), 677--686. Google ScholarDigital Library
- Fonseca, R., Dutta, P., Levis, P., and Stoica, I. Quanto: Tracking energy in networked embedded systems. In OSDI, vol. 8 (2008), 323--338. Google ScholarDigital Library
- Fonseca, R., Porter, G., Katz, R. H., Shenker, S., and Stoica, I. X-trace: A pervasive network tracing framework. In Proceedings of the 4th USENIX conference on Networked systems design & implementation, USENIX Association (2007), 20--20. Google ScholarDigital Library
- Gay, D., Levis, P., Von Behren, R., Welsh, M., Brewer, E., and Culler, D. The nesc language: A holistic approach to networked embedded systems. Acm Sigplan Notices 49, 4 (2014), 41--51. Google ScholarDigital Library
- Gugerty, L., and Olson, G. Debugging by skilled and novice programmers. In Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, CHI '86, ACM (New York, NY, USA, 1986), 171--174. Google ScholarDigital Library
- Handigol, N., Heller, B., Jeyakumar, V., Maziéres, D., and McKeown, N. Where is the debugger for my software-defined network? In Proceedings of the first workshop on Hot topics in software defined networks, ACM (2012), 55--60. Google ScholarDigital Library
- Handigol, N., Heller, B., Jeyakumar, V., Mazières, D., and McKeown, N. I know what your packet did last hop: Using packet histories to troubleshoot networks. In NSDI, vol. 14 (2014), 71--85. Google ScholarDigital Library
- Hartmann, B., Klemmer, S. R., Bernstein, M., Abdulla, L., Burr, B., Robinson-Mosher, A., and Gee, J. Reflective physical prototyping through integrated design, test, and analysis. In Proceedings of the 19th annual ACM symposium on User interface software and technology, ACM (2006), 299--308. Google ScholarDigital Library
- Hibschman, J., and Zhang, H. Unravel: Rapid web application reverse engineering via interaction recording, source tracing, and library detection. In Proceedings of the 28th Annual ACM Symposium on User Interface Software & Technology, ACM (2015), 270--279. Google ScholarDigital Library
- Industries, A. Adafruit io. https://io.adafruit.com/, 2018.Google Scholar
- Kato, J., McDirmid, S., and Cao, X. Dejavu: integrated support for developing interactive camera-based programs. In Proceedings of the 25th annual ACM symposium on User interface software and technology, ACM (2012), 189--196. Google ScholarDigital Library
- Kato, Y. Splish: a visual programming environment for arduino to accelerate physical computing experiences. In Creating Connecting and Collaborating through Computing (C5), 2010 Eighth International Conference on, IEEE (2010), 3--10. Google ScholarDigital Library
- Ko, A. J., and Myers, B. A. Debugging reinvented: Asking and answering why and why not questions about program behavior. In Proceedings of the 30th International Conference on Software Engineering, ICSE '08, ACM (New York, NY, USA, 2008), 301--310. Google ScholarDigital Library
- Ko, A. J., and Myers, B. A. Finding causes of program output with the java whyline. In Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, ACM (2009), 1569--1578. Google ScholarDigital Library
- Lieber, T., Brandt, J. R., and Miller, R. C. Addressing misconceptions about code with always-on programming visualizations. In Proceedings of the 32nd annual ACM conference on Human factors in computing systems, ACM (2014), 2481--2490. Google ScholarDigital Library
- Marquardt, N., Gross, T., Carpendale, S., and Greenberg, S. Revealing the invisible: visualizing the location and event flow of distributed physical devices. In Proceedings of the fourth international conference on Tangible, embedded, and embodied interaction, ACM (2010), 41--48. Google ScholarDigital Library
- McGrath, W., Drew, D., Warner, J., Kazemitabaar, M., Karchemsky, M., Mellis, D., and Hartmann, B. Bifröst: Visualizing and checking behavior of embedded systems across hardware and software. In Proceedings of the 30th Annual ACM Symposium on User Interface Software and Technology, ACM (2017), 299--310. Google ScholarDigital Library
- McGrath, W., Etemadi, M., Roy, S., and Hartmann, B. Fabryq: Using phones as gateways to prototype internet of things applications using web scripting. In Proceedings of the 7th ACM SIGCHI Symposium on Engineering Interactive Computing Systems, ACM (2015), 164--173. Google ScholarDigital Library
- Mellis, D., Banzi, M., Cuartielles, D., and Igoe, T. Arduino: An open electronic prototyping platform. In Proc. CHI, vol. 2007 (2007).Google Scholar
- Mellis, D. A., Buechley, L., Resnick, M., and Hartmann, B. Engaging amateurs in the design, fabrication, and assembly of electronic devices. In Proceedings of the 2016 ACM Conference on Designing Interactive Systems, ACM (2016), 1270--1281. Google ScholarDigital Library
- Parr, T. J., and Quong, R. W. Antlr: A predicated- LL(k) parser generator. Software - Practice and Experience 25, 7 (1995), 789--810. Google ScholarDigital Library
- Particle. Particle cloud. https://www.particle.io/, 2018.Google Scholar
- Reynolds, P., Killian, C. E., Wiener, J. L., Mogul, J. C., Shah, M. A., and Vahdat, A. Pip: Detecting the unexpected in distributed systems. In NSDI, vol. 6 (2006), 9--9. Google ScholarDigital Library
- Sambasivan, R. R., Zheng, A. X., De Rosa, M., Krevat, E., Whitman, S., Stroucken, M., Wang, W., Xu, L., and Ganger, G. R. Diagnosing performance changes by comparing request flows. In NSDI, vol. 5 (2011), 1--1. Google ScholarDigital Library
- Sigelman, B. H., Barroso, L. A., Burrows, M., Stephenson, P., Plakal, M., Beaver, D., Jaspan, S., and Shanbhag, C. Dapper, a large-scale distributed systems tracing infrastructure. Tech. rep., Technical report, Google, Inc, 2010.Google Scholar
- Strasnick, E., Agrawala, M., and Follmer, S. Scanalog: Interactive design and debugging of analog circuits with programmable hardware. In Proceedings of the 30th Annual ACM Symposium on User Interface Software and Technology, ACM (2017), 321--330. Google ScholarDigital Library
- Wundsam, A., Levin, D., Seetharaman, S., Feldmann, A., et al. Ofrewind: Enabling record and replay troubleshooting for networks. In USENIX Annual Technical Conference (2011), 15--17. Google ScholarDigital Library
- Zimmermann, H. Osi reference model--the iso model of architecture for open systems interconnection. IEEE Transactions on communications 28, 4 (1980), 425--432.Google ScholarCross Ref
Index Terms
- WiFröst: Bridging the Information Gap for Debugging of Networked Embedded Systems
Recommendations
Bifröst: Visualizing and Checking Behavior of Embedded Systems across Hardware and Software
UIST '17: Proceedings of the 30th Annual ACM Symposium on User Interface Software and TechnologyThe Maker movement has encouraged more people to start working with electronics and embedded processors. A key challenge in developing and debugging custom embedded systems is understanding their behavior, particularly at the boundary between hardware ...
A study on the use of IDE features for debugging
MSR '18: Proceedings of the 15th International Conference on Mining Software RepositoriesIntegrated development environments (IDEs) provide features to help developers both create and understand code. As maintenance and bug repair are time-consuming and costly activities, IDEs have long integrated debugging features to simplify these tasks. ...
Tracing and recording interrupts in embedded software
During the system development, developers often must correct wrong behavior in the software-an activity colloquially called program debugging. Debugging is a complex activity, especially in real-time embedded systems because such systems interact with ...
Comments