High-level language debugging for concurrent programs
- 1 November 1990
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Computer Systems
- Vol. 8 (4) , 311-336
- https://doi.org/10.1145/128733.128737
Abstract
An integrated system design for debugging distributed programs written in concurrent high-level languages is described. A variety of user-interface, monitoring, and analysis tools integrated around a uniform process model are provided. Because the tools are language-based, the user does not have to deal with low-level implementation details of distribution and concurrency, and instead can focus on the logic of the program in terms of language-level objects and constructs. The tools provide facilities for experimentation with process scheduling, environment simulation, and nondeterministic selections. Presentation and analysis of the program's behavior are supported by history replay, state queries, and assertion checking. Assertions are formulated in linear time temporal logic, which is a logic particularly well suited to specify the behavior of distributed programs. The tools are separated into two sets. The language-specific tools are those that directly interact with programs for monitoring of and on-line experimenting with distributed programs. The language-independent tools are those that support off-line presentation and analysis of the monitored information. This separation makes the system applicable to a wide range of programming languages. In addition, the separation of interactive experimentation from off-line analysis provides for efficient exploitation of both user time and machine resources. The implementation of a debugging facility for OCCAM is described.Keywords
This publication has 11 references indexed in Scilit:
- Debugging concurrent programsACM Computing Surveys, 1989
- A relational approach to monitoring complex systemsACM Transactions on Computer Systems, 1988
- Monitoring distributed systemsACM Transactions on Computer Systems, 1987
- Development of a debugger for a concurrent languageIEEE Transactions on Software Engineering, 1986
- A debugger for message‐based processesSoftware: Practice and Experience, 1985
- A Technique for High-Performance Data CompressionComputer, 1984
- Debugging a Distributed Computing SystemIEEE Transactions on Software Engineering, 1984
- NILPublished by Association for Computing Machinery (ACM) ,1983
- Time, clocks, and the ordering of events in a distributed systemCommunications of the ACM, 1978
- An online editorCommunications of the ACM, 1967