Debugging of distributed software is approached in this paper by defining specific classes of program events to be monitored by the user while execution is in progress. An elementary event is defined in terms of a range condition and an access mode for a memory location. The concept of a compound event is introduced, expressed in terms of either an accumulated event, a sequential event conjunction, a logical event disjunction or an instantaneous event conjunction. On the occurrence of an event, the actions connected with that event will be performed. Possible actions are trace and break traps, event counting and measurement of time intervals. A specific debugger designed for a realtime multimicroprocessor system and based on the event-action model is presented.