  Debugging of large software systems consisting of many processes accessing
shared resources is a very difficult task. Many commercial systems record
essential events during system execution for post-mortem analysis. However, the
event traces of large and long-running systems can be quite voluminous.
Analysis of such event traces to identify sources of incorrect behavior can be
very tedious, error-prone, and inefficient. In this paper, we propose a novel
technique of slicing event traces as a means of reducing the number of events
for analysis. This technique identifies events that may have influenced
observed incorrect system behavior. In order to recognize influencing events
several types of dependencies between events are identified. These dependencies
are determined automatically from an event trace. In order to improve the
precision of slicing we propose to use additional dependencies, referred to as
cause-effect dependencies, which can further reduce the size of sliced event
traces. Our initial experience has shown that this slicing technique can
significantly reduce the size of event traces for analysis.
