Skip to main content
Log in

Deterministic reversible MPSoC debugger based on virtual platform execution traces

  • Published:
Design Automation for Embedded Systems Aims and scope Submit manuscript

Abstract

The increasing complexity of multiprocessor system on chip (MPSoC) makes the software developers life harder when chasing bugs. The debugging process is particularly tedious as it involves analyzing parallel execution flows. Executing a program many times is an integral part of the process in conventional debugging, but the non-determinism due to parallel execution often leads to different execution paths and different behaviors. In this paper, we propose an approach based on simulation, as it is nowadays an integral part of the MPSoC design flow, to ease pin-pointing bugs in a parallel execution. To that aim, we collect traces using a virtual platform, and when an execution fails, re-execute the traces, in either forward or reverse direction. We define a trace model suitable for this task, and detail a strategy for providing forward and reverse execution features to avoid long simulation times during a debug session. We demonstrate experimentally that re-execution is a deterministic process which, when debugging using the usual trial and error developer approach, is much faster than simulation.

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

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6

Similar content being viewed by others

References

  1. Agrawal H, De Millo R, Spafford E (1991) An execution-backtracking approach to debugging. IEEE Softw 8(3):21–26. doi:10.1109/52.88940

    Article  Google Scholar 

  2. Akgul T, Mooney III, VJ (2002) Instruction-level reverse execution for debugging. In: Proceedings of the ACM SIGPLAN/SIGSOFT workshop on program analysis for software tools and engineering, pp 18–25. doi:10.1145/586094.586101

  3. Altekar G, Stoica I (2009) ODR: output-deterministic replay for multicore debugging. In: Proceedings of the ACM SIGOPS 22nd symposium on operating systems principles, pp 193–206. doi:10.1145/1629575.1629594

  4. Chen SK, Fuchs W, Chung JY (2001) Reversible debugging using program instrumentation. IEEE Trans Softw Eng 27(8):715–727. doi:10.1109/32.940726

    Article  Google Scholar 

  5. Cunha M, Fournel N, Pétrot F (2015) Collecting traces in dynamic binary translation based virtual prototyping platforms. In: Proceedings of the seventh ACM RAPIDO workshop on rapid simulation and performance evaluation. doi:10.1145/2693433.2693437

  6. Dunlap GW, Lucchetti DG, Fetterman MA, Chen PM (2008) Execution replay of multiprocessor virtual machines. In: Proceedings of the 4th ACM SIGPLAN/SIGOPS international conference on virtual execution environments, pp 121–130. doi:10.1145/1346256.1346273

  7. Feldman SI, Brown CB (1988) IGOR: a system for program debugging via reversible execution. In: Proceedings of the ACM SIGPLAN/SIGOPS workshop on parallel and distributed debugging, pp 112–123. ACM. doi:10.1145/68210.69226

  8. Gligor M, Fournel N, Pétrot F (2009) Using binary translation in event driven simulation for fast and flexible MPSoC simulation. In: Proceedings of the 7th IEEE/ACM international conference on Hardware/software codesign and system synthesis, pp 71–80. doi:10.1145/1629435.1629446

  9. Hedde D, Pétrot F (2011) A non intrusive simulation-based trace system to analyse multiprocessor systems-on-chip software. In: 22nd IEEE international symposium on rapid system prototyping, pp 106–112. doi:10.1109/RSP.2011.5929983

  10. Kalray (2014) MPPA Many core. http://www.kalray.eu/products/

  11. Koju T, Takada S, Doi N (2005) An efficient and generic reversible debugger using the virtual machine based approach. In: ACM SIGPLAN/SIGOPS international conference on virtual execution environments, p 79

  12. Law GEW, Smith JP (2012) System and method for bi-directional debugging of computer. US Patent 8,090,989, http://undo-software.com

  13. Lee J (2007) Dynamic reverse code generation for backward execution. Electron Notes Theor Comput Sci 174(4):37–54. doi:10.1016/j.entcs.2006.12.028

    Article  Google Scholar 

  14. Molnar I (2008) Kill the “big kernel lock (bkl)” tree. Linux kernel mailing list (may 14, 2008)

  15. Molnar I, van de Ven A (2015) Lockdep design. Linux Kernel Documentation. https://www.kernel.org/doc/Documentation/locking/lockdep-design.txt. Accessed 14 Aug 2015

  16. Pokam G, Danne K, Pereira C, Kassa R, Kranich T, Hu S, Gottschlich J, Honarmand N, Dautenhahn N, King ST, Torrellas J (2013) QuickRec: prototyping an intel architecture extension for record and replay of multithreaded programs. In: Proceedings of the 40th annual international symposium on computer architecture, pp 643–654. doi:10.1145/2485922.2485977

  17. Pothier G, Tanter E (2009) Back to the future: omniscient debugging. IEEE Softw 26(6):78–85. doi:10.1109/MS.2009.169

    Article  Google Scholar 

  18. Silverstein A (2002) Judy IV shop manual—high performance dynamic array. http://judy.sourceforge.net/doc/shop_interm.pdf

  19. Synopsys (2015) Synopsys virtual prototyping solutions for embedded software development. http://www.synopsys.com/Prototyping/VirtualPrototyping/Pages/default.aspx. Accessed 14 Aug 2015

  20. Tilera (2015) Tile-Gx Processor Family. http://www.tilera.com/products/?ezchip=585&spage=614. Accessed 14 Aug 2015

  21. Wang L, Liu X, Song A, Xu L, Liu T (2009) An effective reversible debugger of cross platform based on virtualization. In: International conference on embedded software and systems, pp 448–453. doi:10.1109/ICESS.2009.96

Download references

Acknowledgments

The authors would like to acknowledge the financial support of the French Ministry of Industry through the SoCTrace FUI project and the Ministry of Education of Brazil through the CAPES Foundation (Process number: BEX 9063/13-7) for this work.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Marcos Aurélio Pinto Cunha.

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Cunha, M.A.P., Fournel, N. & Pétrot, F. Deterministic reversible MPSoC debugger based on virtual platform execution traces. Des Autom Embed Syst 20, 47–63 (2016). https://doi.org/10.1007/s10617-015-9167-8

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10617-015-9167-8

Keywords

Navigation