Skip to main content
Article thumbnail
Location of Repository

Virtual Machine Based Debugging for occam-pi

By Carl G. Ritson and Jonathan Simpson


While we strive to create robust language constructs and design patterns which prevent the introduction of faults during software development, an inevitable element of human error still remains. We must therefore endeavor to ease and accelerate the process of diagnosing and fixing software faults, commonly known as 'debugging'. Current support for debugging occam-pi programs is fairly limited. At best the developer is presented with a reference to the last known code line executed before their program abnormally terminated. This assumes the program does in fact terminate, and does not instead live-lock. In cases where this support is not sufficient, developers must instrument their own tracing support, ``printf style''. An exercise which typically enlightens one as to the true meaning of concurrency... In this paper we explore previous work in the field of debugging occam programs and introduce a new method for run-time monitoring of occam-pi applications, based on the Transterpreter virtual machine interpreter. By adding a set of extensions to the Transterpreter, we give occam-pi processes the ability to interact with their execution environment. Use of a virtual machine allows us to expose program execution state which would otherwise require non-portable or specialised hardware support. Using a model which bears similarities to that applied when debugging embedded systems with a JTAG connection, we describe debugging occam-pi by mediating the execution of one execution process from another

Topics: QA76
Publisher: IOS Press
Year: 2008
OAI identifier:

Suggested articles


  1. (1994). An approach to the run-time monitoring of parallel programs. doi
  2. (2000). Concurrency, objects and visualisation. doi
  3. (1989). Debugging concurrent programs. doi
  4. (1987). Debugging parallel programs with instant replay. doi
  5. (1987). GRAIL: Graphical representation of activity, interconnection and loading.
  6. (1968). Letters to the editor: go to statement considered harmful. doi
  7. (2001). Mobile Data, Dynamic Allocation and Zero Aliasing: an occam Experiment.
  8. (2006). Mobile Robot Control: The Subsumption Architecture and occam-pi.
  9. (1993). Panorama: a portable, extensible parallel debugger. doi
  10. (2000). Post-Mortem Debugging
  11. (2002). Prioritised Dynamic Communicating Processes: Part I. doi
  12. (1993). Replay-based debugging of occam programs. doi
  13. (1993). SoftwareTestings, Verfication and Reliability,
  14. (1987). The TDS occam 2 debugging system.
  15. (2004). The Transterpreter: A Transputer Interpreter.
  16. (1988). Understanding multi-transputer execution.
  17. (1995). Visputer–A Graphical Visualization Tool for Parallel Programming. doi

To submit an update or takedown request for this paper, please submit an Update/Correction/Removal Request.