1. A system for visualizing events received and processed by a plurality of software agents in a distributed system, the system comprising: one or more computer processors; a memory containing a program which when executed by the one or more computer processors performs an operation, the operation comprising: identifying, for each software agent, by a debugger, a plurality of events occurring on that software agent; identifying at least two of the plurality of events occurring effectively simultaneously; generating, on a user interface presented by the debugger, a visualization showing a respective timeline for each of the plurality of software agents wherein the visualization represents each event consumed by each software agent as an icon above the respective timeline for the respective software agent and each event emitted by each respective software agent as an icon below the respective timeline for the respective software agent, wherein the icons are ordered based on a time each respective event is consumed or emitted and wherein the visualization includes a stacked icon on at least one of the timelines representing the identified at least two of the plurality of events occurring effectively simultaneously; presenting the visualization via the user interface of the debugger; receiving a request indicating at least a first one of the icons in the visualization, wherein the first icon is the stacked icon; updating the first icon to present a semi-circle arrangement of icons representing the identified at least two of the plurality of events occurring effectively simultaneously; determining, for the event corresponding to the first icon, a causal chain of events related to that event; and updating the icons corresponding to events in the causal chain of events to present, on the user interface of the debugger, an ordered sequence of events in the causal chain of events that occurred relative to the event corresponding to the first one of the icons.