A debugger for concurrent programs

This paper reports on an experimental debugger for concurrent programs. Design objectives include a showing of greatest usefulness when dealing with multiprocess interactions, creation of a simplified more approachable interface for programmers, allowance for the systematic organization (and limitation) of debugging information by programmers, reflection of a natural view of concurrency, and portability. The design responds to a perceived need for debugging techniques applicable in systems of concurrent, communicating, asynchronous processes. During debugging sessions, a user is able to dynamically explore interprocess synchronization points, parallel actions and deadlock situations. The programmer interface is based on a transparent window multiplexer providing a set of windows for each concurrent process. The window manager interactively maps interesting windows to programmer‐specified viewscreen locations, while relegating temporarily uninteresting windows to the background. In implementing a debugger for concurrent programs, a principal concern is the probe effect, or the possibility that the debugger itself masks synchronization errors in the program being debugged. For the examples explored, the probe effect was not observed to limit the localization of implanted synchronization errors.

[1]  Colin C. Charlton,et al.  Tools and techniques for teaching microprocessor software development , 1983, Softw. Pract. Exp..

[2]  J. C. Huang Instrumenting Programs for Symbolic-Trace Generation , 1980, Computer.

[3]  D. Helmbold,et al.  Runtime detection and description of deadness errors in Ada tasking , 1985, ALET.

[4]  Edwin H. Satterthwaite Debugging tools for high level languages , 1972, Softw. Pract. Exp..

[5]  David Holdsworth A system for analysing Ada programs at run‐time , 1983, Softw. Pract. Exp..

[6]  Norman K. Meyrowitz,et al.  BRUWIN: An adaptable design strategy for window manager/virtual terminal systems , 1981, SOSP.

[7]  R. H. Pierce,et al.  Source Language Debugging on a Small Computer , 1974, Comput. J..

[8]  Douglas Comer,et al.  Operating system design: the XINU approach , 1984 .

[9]  Dick Hamlet,et al.  Debugging “level”: Step-wise debugging , 1983, SIGSOFT '83.

[10]  Richard E. Fairley Ada debugging and testing support environments , 1980, SIGPLAN '80.

[11]  Peter H. Feiler,et al.  An Incremental Programming Environment , 1981, IEEE Transactions on Software Engineering.

[12]  Insup Lee,et al.  DYMOS: a dynamic modification system , 1983 .

[13]  Thomas A. Cargill The Blit debugger , 1983, J. Syst. Softw..

[14]  Edward Tucker Smith Debugging techniques for communicating, loosely-coupled processes , 1982 .

[15]  Thomas G. Evans,et al.  DEBUG—an extension to current online debugging techniques , 1965, CACM.

[16]  Brig Elliott A high‐level debugger for PL/I, Fortran and Basic , 1982, Softw. Pract. Exp..

[17]  H. Earl Ferguson,et al.  Debugging systems at the source language level , 1963, CACM.

[18]  Jonice Cynthia Weber Interactive debugging of concurrent programs , 1983, ACM SIGPLAN Notices.

[19]  Mark Scott Johnson Translator design to support run‐time debugging , 1979, Softw. Pract. Exp..

[20]  Mayer D. Schwartz,et al.  Viewing a programming environment as a single tool , 1984 .

[21]  Jolene J. Hart The Advanced Interactive Debugging System (AIDS) , 1979, SIGP.

[22]  Paul H. Leng,et al.  Aids for Pragmatic Error Detection , 1983, Softw. Pract. Exp..

[23]  Rob Pike Graphics in overlapping bitmap layers , 1983, TOGS.

[24]  Jason Gait,et al.  A probe effect in concurrent programs , 1986, Softw. Pract. Exp..

[25]  Alan M. Davis,et al.  The design and implementation of a table driven, interactive diagnostic programming system , 1976, CACM.

[26]  D. J. Robson An evaluation of throw‐away compiling , 1983, Softw. Pract. Exp..

[27]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..