Design Automation for Embedded Systems

, Volume 20, Issue 1, pp 47–63 | Cite as

Deterministic reversible MPSoC debugger based on virtual platform execution traces

  • Marcos Aurélio Pinto CunhaEmail author
  • Nicolas Fournel
  • Frédéric Pétrot


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.


Reverse debugging Trace Virtual Platforms MPSoC 



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.


  1. 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 CrossRefGoogle Scholar
  2. 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. 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. 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 CrossRefGoogle Scholar
  5. 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. 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. 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. 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. 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. 10.
    Kalray (2014) MPPA Many core.
  11. 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 79Google Scholar
  12. 12.
    Law GEW, Smith JP (2012) System and method for bi-directional debugging of computer. US Patent 8,090,989,
  13. 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 CrossRefGoogle Scholar
  14. 14.
    Molnar I (2008) Kill the “big kernel lock (bkl)” tree. Linux kernel mailing list (may 14, 2008)Google Scholar
  15. 15.
    Molnar I, van de Ven A (2015) Lockdep design. Linux Kernel Documentation. Accessed 14 Aug 2015
  16. 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. 17.
    Pothier G, Tanter E (2009) Back to the future: omniscient debugging. IEEE Softw 26(6):78–85. doi: 10.1109/MS.2009.169 CrossRefGoogle Scholar
  18. 18.
    Silverstein A (2002) Judy IV shop manual—high performance dynamic array.
  19. 19.
    Synopsys (2015) Synopsys virtual prototyping solutions for embedded software development. Accessed 14 Aug 2015
  20. 20.
    Tilera (2015) Tile-Gx Processor Family. Accessed 14 Aug 2015
  21. 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

Copyright information

© Springer Science+Business Media New York 2015

Authors and Affiliations

  • Marcos Aurélio Pinto Cunha
    • 1
    Email author
  • Nicolas Fournel
    • 1
  • Frédéric Pétrot
    • 1
  1. 1.Laboratoire TIMA, Université Grenoble AlpesGrenobleFrance

Personalised recommendations