Skip to main content

Automated Reproduction and Analysis of Bugs in Embedded Software

  • Chapter
  • First Online:
Embedded Software Verification and Debugging

Part of the book series: Embedded Systems ((EMSY))

Abstract

Embedded systems are used everywhere in our daily lives. About 90% of the produced microprocessors are used in embedded systems. Embedded systems get more and more dominated by software. Bugs remain in the software and can often be observed for the first time only in late development phases. It is difficult to reproduce bugs in embedded systems based on test reports. Our proposed automated bug reproduction concept is capable of handling sensor inputs as well as thread schedules. It reduces the manual effort while debugging a reproduced bug by applying dynamic verification during replay . This chapter shows the implementation of assertions and presents anomaly detection techniques to locate the root-causes of bugs. Anomalies can be detected by comparing executions which cause the bug with executions which do not cause the bug. Interferences between two executions which can be compared have to be detected. Using partitioning techniques, we explain coverage-based analysis and metrics as well as invariant-based analysis. The monitoring of the software for these analyses may cause a high overhead and thus may result in long monitoring times. Therefore, we show how monitoring can be accelerated by hierarchical refinement. Most of the available automated bug reproduction and dynamic verification tools are only applicable on specific platforms. Debugging tools, like the GDB, are usually the first tools which are available for new embedded platforms. Therefore, our tool is implemented based on the GDB . We present a tool for automated bug reproduction and efficient dynamic verification implemented with a debugger tool.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 79.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 129.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD 139.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 1.

    Status July 2016

References

  1. Navit-car navigation system. http://www.navit-project.org. Accessed Aug 2016

  2. Abreu R (2009) Spectrum-based fault localization in embedded software. PhD thesis, University Delft

    Google Scholar 

  3. Amiar A, Delahaye M, Falcone Y, du Bousquet L (2013) Fault localization in embedded software based on a single cyclic trace. In: ISSRE ’13: proceedings of the 24th international automated reproduction and analysis of bugs in embedded software 39 symposium on software reliability engineering. IEEE, pp 148–157

    Google Scholar 

  4. Anderson P (2008) The use and limitations of static-analysis tools to improve software quality. CrossTalk J Defence Softw Eng 42(4):18–21

    Google Scholar 

  5. Anvik J, Hiew L, Murphy GC (2006) Who should fix this bug? In: ICSE ’06: proceedings of the 28th international conference on software engineering. ACM, pp 361–370

    Google Scholar 

  6. Barringer H, Havelund K (2011) Tracecontract: a scala dsl for trace analysis. In: FM ’11: proceedings of the 17th international symposium on formal methods. Springer, pp 57–72

    Google Scholar 

  7. Burger M, Zeller A (2011) Minimizing reproduction of software failures. In: Proceedings of 2011 international symposium on software testing and analysis, pp 221–231

    Google Scholar 

  8. Charette RN (2009) This car runs on code. IEEE Spectr 21(6)

    Google Scholar 

  9. Dallmeier V, Lindig C, Zeller A (2005) Lightweight bug localization with ample. In: AADEBUG ’05: proceedings of the sixth international symposium on automated analysis-driven debugging. ACM, pp 99–104

    Google Scholar 

  10. Dovgalyuk P (2012) Deterministic replay of system’s execution with multi-target qemu simulator for dynamic analysis and reverse debugging. In: CSMR ’12: proceedings of the 16th European conference on software maintenance and reengineering. IEEE, pp 553–556

    Google Scholar 

  11. Ebert C, Jones C (2009) Embedded software: facts, figures and future. Computer 42(4):42–52

    Article  Google Scholar 

  12. Eichelberger H, Kropf T, Greiner T, Rosenstiel W (2013) Runtime verification driven debugging of replayed errors. In: ICTSS ’13: proceedings of the PhD workshop of ICTSS’13

    Google Scholar 

  13. Eichelberger H, Kropf T, Ruf J, Greiner T, Rosenstiel W (2015) Efficient fault localization during replay of embedded software. In: SEAA ’15: proceedings of the 41th euromicro conference series on software engineering and advanced applications. IEEE, pp 43–52

    Google Scholar 

  14. Eichelberger H, Ruf J, Kropf T, Greiner T, Rosenstiel W (2014) Debugger-based record replay and dynamic analysis for in-vehicle infotainment. In: ICCSA ’14: Proceedings of the 14th international conference on computational science and its applications. Springer, pp 387–401

    Google Scholar 

  15. Foundation G (2016) Gdb: the gnu project debugger. http://www.sourceware.org/gdb. Accessed Aug 2016

  16. Foundation G (2016) Gnu pth—the gnu portable threads. http://www.gnu.org/software/pth/. Accessed Aug 2016

  17. Goeders J, Wilton S (2014) Effective fpga debug for high-level synthesis generated circuits. In: FPL ’14: proceedings of the 24th international conference on field programmable logic and applications. IEEE, pp 1–8

    Google Scholar 

  18. Goll J (2012) Methoden des software engineering. Springer, Wiesbaden

    Book  Google Scholar 

  19. Gomez L, Neamtiu I, Azim T, Millstein T (2013) Reran: timing- and touch-sensitive record and replay for android. In: ICSE ’13: proceedings of the 35th international conference on software engineering. ACM, pp 72–81

    Google Scholar 

  20. Heckeler P, Eichelberger H, Schlich B, Kropf T, Ruf J, Huster S, Burg S, Rosenstiel W (2013) Accelerated model-based robustness testing of state machine implementations. ACM Appl Comput Rev 13(03):50–67

    Article  Google Scholar 

  21. Hower D, Hill M (2008) Rerun: exploiting episodes for lightweight memory race recording. In: ISCA ’08: proceedings of the 35th international symposium on computer architecture. ACM/IEEE, pp 265–276

    Google Scholar 

  22. Hutchins M, Foster H, Goradia T, Ostrand T (1994) Experiments of the effectiveness of dataflow- and controlflow-based test adequacy criteria. In: ICSE ’94: proceedings of the 16th international conference on software engineering. IEEE, pp 191–200

    Google Scholar 

  23. Jiang B, Long X, Gao X, Liu Z, Chan W (2011) Floma: statistical fault localization for mobile embedded system. In: ICACC ’11: proceedings of the 3rd international conference on advanced computer control. IEEE, pp 396–400

    Google Scholar 

  24. Jones C (2012) A short history of the cost per defect metric. http://www.ifpug.org/Documents/Jones-CostPerDefectMetricVersion4.pdf. Accessed Aug 2016

  25. Jones JA, Harrold MJ, Stasko J (2002) Visualization of test information to assist fault localization. In: Proceedings of 2002 international conference on software engineering, pp 467–477

    Google Scholar 

  26. Joorabchi ME, Mirzaaghaei M, Mesbah A (2014) Works for me! characterizing non- reproducible bug reports. In: MSR ’14: proceedings of the 11th working conference on mining software repositories. IEEE, pp 62–71

    Google Scholar 

  27. Laadan O, Viennot N, Nieh J (2010) Transparent, lightweight application execution replay on commodity multiprocessor operating systems. In: SIGMETRICS ’10: proceedings of the 2010 ACM SIGMETRICS international conference on measurement and modeling of computer systems. ACM, pp 155–166

    Google Scholar 

  28. Lee YH, Song YW (2010) Replay debugging for multi-threaded embedded software. In: EUC ’10: proceedings of the 2010 IEEE international conference on embedded and ubiquitous computing. IEEE, pp 15–22

    Google Scholar 

  29. Leucker M, Schallhart C (2009) A brief account of runtime verification. J Logic Algebraic Program 78(5):293–303

    Article  MATH  Google Scholar 

  30. Liggesmeyer P (2009) Software-qualitaet. Spektrum Akademischer Verlag, Heidelberg

    Book  MATH  Google Scholar 

  31. Liu C, Yan X, Yu H, Han J, Yu P (2005) Mining behavior graphs for “backtrace” of noncrashing bugs. In: SDM ’05: proceedings of the 2005 SIAM international conference on data mining

    Google Scholar 

  32. Liu X, Lin W, Pan A, Zhang Z (2007) Wids checker. In: Proceedings of 4th USENIX conference on networked systems design and implementation, pp 257–270

    Google Scholar 

  33. Maeng J, Kwon JI, Sin MK, Ryu M (2009) Rt-replayer: a record-replay architecture for embedded real-time software debugging. In: SAC ’09: proceedings of the 2009 ACM symposium on applied computing. ACM, pp 1670–1675

    Google Scholar 

  34. Patil H, Pereira C, Stallcup M, Lueck G, Cownie J (2010) Pinplay: a framework for deterministic replay and reproducible analysis of parallel programs. In: CGO ’10: proceedings of the 8th international symposium on code generation and optimization. IEEE/ACM, pp 2–11

    Google Scholar 

  35. Sen K, Kalasapur S, Brutch T, Gibbs S (2013) Jalangi: a selective record-replay and dynamic analysis framework for javascript. In: ESEC/FSE ’13: proceedings of the 9th joint meeting on foundations of software engineering. ACM, pp 488–498

    Google Scholar 

  36. Shin H, Endoh Y, Kataoka Y (2007) Arve: aspect-oriented runtime verification environment. In: Proceedings of 2007 runtime verification, pp 87–96

    Google Scholar 

  37. Tan L, Liu C, Li Z, Wang X, Zhou Y, Zhai C (2014) Bug characteristics in open source software. Imperical Softw Eng 19(6):1665–1705

    Article  Google Scholar 

  38. Wu J, Geyer C, Rehg JM (2011) Real-time human detection using contour cues. In: ICRA ’11: proceedings of the 2011 international conference on robotics and automation. IEEE, pp 860–867

    Google Scholar 

  39. Xuan J, Monperrus M (2014) Learning to combine multiple ranking metrics for fault localization. In: ICSME ’14: proceedings of the 30th international conference on software maintenance and evolution. IEEE, pp 191–200

    Google Scholar 

  40. Yasushi S (2005) Jockey: a user-space library for record-replay debugging. In: AADEBUG ’05: proceedings of the sixth international symposium on automated analysis-driven debugging. ACM, pp 69–76

    Google Scholar 

  41. Zeller A (2009) Why programs fail: a guide to systematic debugging, 2nd edn. Morgan Kaufmann Publishers

    Google Scholar 

  42. Zhang S, Ernst MD (2013) Automated diagnosis of software configuration errors. In: Proceedings of 2013 international conference on software engineering, pp 312–321

    Google Scholar 

  43. Zuo Z, Khoo SC, Sun C (2014) Efficient predicated bug signature mining via hierarchical instrumentation. In: ISSTA ’14: proceedings of the 2014 international symposium on software testing and analysis. ACM, pp 215–224

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Hanno Eichelberger .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2017 Springer Science+Business Media, LLC

About this chapter

Cite this chapter

Eichelberger, H., Kropf, T., Ruf, J., Rosenstiel, W. (2017). Automated Reproduction and Analysis of Bugs in Embedded Software. In: Lettnin, D., Winterholer, M. (eds) Embedded Software Verification and Debugging. Embedded Systems. Springer, New York, NY. https://doi.org/10.1007/978-1-4614-2266-2_4

Download citation

  • DOI: https://doi.org/10.1007/978-1-4614-2266-2_4

  • Published:

  • Publisher Name: Springer, New York, NY

  • Print ISBN: 978-1-4614-2265-5

  • Online ISBN: 978-1-4614-2266-2

  • eBook Packages: EngineeringEngineering (R0)

Publish with us

Policies and ethics