Tutorials

The following resources demonstrate the capabilities of JIVE. We have included online tutorials, video demonstrations, presentations, screen shots, and a collection of reference applications which you can use to explore JIVE.

Online Tutorials

  • Beginning to Debug with JIVE demonstrates how to initiate debugging with JIVE. It introduces the key concepts of JIVE and also briefly describes each of the views provided by the JIVE perspective. Users new to JIVE should read this tutorial first. A working knowledge of Eclipse is assumed.
  • Query-based Debugging in JIVE demonstrates JIVE's ability to visualize program executions and revisit past states. In conjunction with the ability to search through a program's execution history, JIVE becomes a powerful tool for declarative and visual debugging. In this tutorial, we will explore JIVE's declarative (or query-based) debugging facility and see how it ties together with visualization and reverse stepping.
  • Managing Large Executions demonstrates three ways of limiting the size of visualizations.
    1. Exclusion Filters. This allows one to disable the visualization of execution within designated classes or entire packages. JIVE comes with an exclusion filter applied to a number of packages and Java libraries.
    2. Debugging over an Interval. This is useful when one wants to visualize execution over a well-defined region of code that forms part of a much larger system, without visualizing the entire system. One can specify a pair of breakpoints within which events are collected and diagrams are drawn. At other points in the execution, diagrams are suppressed.
    3. Dynamic Slicing. Here, given a variable of interest, a backward flow analysis on the execution trace is performed, and reduced sequence and object diagrams are constructed, which are equivalent to the full sequence and object diagram for the variable of interest.

Video Demos

  • Introduction to JIVE is a 5 minute screencast (with sound) covering some of the more advanced features of JIVE: (1) template queries; (2) folding operations; (3) automatically folding the sequence diagram to focus on selected query answers; (4) using reverse execution after focusing on a query answer. The demo runs a simple binary tree example.
  • JIVE Basics 1/2 is a 5 minute screencast (no sound) covering: (1) JIVE configuration options; (2) how to debug a Java application using JIVE; (3) using the JIVE perspective and the available views, including the Object Diagram and Sequence Diagram views (which allow you to export the runtime diagrams). The demo runs Sun's Dining Philosophers example application, showing how easy it is to explore concurrent behavior using our tool.
  • JIVE Basics 2/2 is a 6 minute screencast (no sound) continuation of the first part, covering: (1) the contour and sequence models; (2) the event log and how to copy the raw data to the clipboard; (3) the JIVE search window, which provides template queries over the underlying execution history; (4) the JIVE way of presenting search results-- in a tree-like (or tabe-like) fashion and as a red square on the sequence diagram; (5) JIVE's reverse execution feature, wherein a double-click on a search answer takes the execution back to the instant at which the corresponding search answered occurred in the execution (the object and sequence diagrams are synchronized accordingly).

Screenshot Collections

  • List Collection. This straightforward implementation of a linked list was tailored to show how Object and Sequence diagrams deal with out-of-model method calls. We also illustrate how to perform folding and temporal jumps on the Sequence Diagram. Finally, we describe the Object Diagram resulting from the temporal jump and how to interpret the call paths on the diagram, including out-of-model returns.
  • Parallel Sort Collection. This collection was generated by running five distinct sorting algorithms in parallel, using a CountDownLatch to synchronize their execution's start and end. It demonstrates JIVE's Object diagrams at different stages of the sorting process.
  • Dining Philosophers Collection. This collection was generated by running Sun's Dining Philosophers example application. It demonstrates how JIVE's Object and Sequence diagrams can be used to visually identify concurrent behavior and deadlocks.
  • Binary Search Tree (BST) Collection. Our BST application is implemented using a Model-View-Controller (MVC) architecture in which the controller loads node keys from a file on a separate thread. This collection illustrates many of the features of JIVE's Object and Sequence diagrams.

Presentations

Older Presentations.

  • 11-08-29. DBPL '11 presentation of our paper: "A Temporal Model for Program Debugging."  [PDF]
  • 11-10-14. Lecture on our temporal model to CSE636 Data Integration graduate students.  [PDF]
  • 10-12-01. Overview of JIVE for CSE505 Programming Languages undergraduate students.  [PDF]
  • 10-04-07. Overview of JIVE for CSE605 Advanced Programming Languages graduate students.  [PDF 1]  [PDF 2]