In this post I want to introduce a program that I wrote in the course of my recently finished Bachelor thesis in Computer Science. It’s called Eden-Tracelab, and it is an application for analyzing trace files generated by programs written in the Eden programming language. The Eden language is a dialect of Haskell, specifically designed to implement parallel programs. If you want to learn more about Eden, check out the official website. Eden-Tracelab is a tool for inspecting and debugging the runtime behavior of such programs. It is designed to be used in addition to the already existing tool EdenTV.

How it works

The program consists of three main parts: The first part is a command-line tool to analyze trace files, and to store the generated information into a postgres database. The second part is a web service to serve the event information over a JSON API. The final part is a web application which visualizes the trace analysis, and which provides the user with multiple dynamic views on the data. The following screenshot shows an overview of the web application:

  1. When opening the web interface, Eden-Tracelab will allow the user to chose from a list of analyzed traces.
  2. The user can chose between three views: machines, processes and threads
  3. Initially, the application will start with a relatively low level of detail. This allows for a faster overview of the trace. The level of detail can be adjusted, to allow for a more thorough inspection of the trace.
  4. The actual visualization: Shows a time line for each machine, process or thread (depending on the view). The time line is color-coded, where each color corresponds to a specific state (for example, red means blocked).

Implementation

The tool for analyzing trace files is written in Haskell, as is the web service to serve event data to the front end. The HTML5 viewer is written in CoffeeScript, and uses an HTML5 canvas to display event data.

At this point, the program is still very much a work in progress, but now that the thesis is finished, I can finally publish the source code along with the thesis itself. If anyone is interested in learning more, the full text of the thesis is available here.

The Code

The code for the project is available on github. The project is split into two repositories: One containing the command line tool and one containing the web service and HTML5 viewer.