# 2 Ozcar's Main Components

Picture 2.1 shows the main window after Ozcar has been invoked for the first time.

Picture 2.1: The main window

## 2.1 Thread View

On the left, there is a window labeled Thread Forest. Here you can see all the threads which are currently attached. Their hierarchical dependencies are illustrated by printing them as nodes of a tree: Children are always inserted below their parent, indented to the right.

### 2.1.1 Thread States

Different node shapes correspond to different thread states: The state of a thread can be seen as a pair of two values. The first one determines if the thread is currently stopped by the debugger. Nodes of such threads are printed with a normal font, running threads are printed in bold face. The second component of the pair can have one of the following four values:

runnable

  The thread is runnable. This means it can be scheduled by the virtual machine. Such a thread is printed in green.

blocked

  The thread waits for a synchronization condition. It cannot be scheduled by the virtual machine. Such a thread is printed in yellow.

crashed

  The thread got an unhandled exception. Such a thread is printed in red.

dead

  The thread is dead. Such a thread is printed in grey.

### 2.1.2 Thread Selection

One thread (if there is any one attached) is the selected thread; its node is marked with an asterix. Some actions, like single stepping or selecting stack frames, are always relative to this thread. You can select a thread by clicking on it with the left mouse button or by using the left and right cursor keys.

## 2.2 Stack View

Right beside the thread window, there is another window labeled Stack or Stack of Thread <id>. It prints the stack of the currently selected thread (if there is any). Beware: the topmost frame is displayed at the bottom. The procedure arguments are printed in bold face and can be further investigated (using the Inspector) by clicking on them.

### 2.2.1 Stackframe Selection

One frame is the selected frame. It is displayed white on blue. Initially, the topmost frame is selected implicitely, without being marked in any way. You can navigate through the stack by clicking on a frame (search for a position within the line where no arguments are displayed!) or by using the up and down cursor keys.

When the current thread is running for a longer time, its stack is printed in grey to visualize that the display is out of date.

## 2.3 Variable View

Below the stack window, there are two windows, labeled Local Variables and Global Variables, to display information about local and global variables of the currently selected stack frame. The local environment is sorted by introduction order of the variables in the source code, the global environment is sorted alphabetically. As with the arguments in the stack window, you can click on the (bold faced) values of the variables to inspect them.

## 2.4 Status Line

At the bottom of the main window, there is a Status Line which is used to display miscellaneous useful information.

## 2.5 Source view

This view is the only one which is not located inside Ozcar's main window. Instead, Emacs serves for this purpose by highlightening source code lines appropriately while single stepping.

### 2.5.1 Color scheme

Emacs gives the highlighted lines different colors, depending on how the line was reached by the corresponding thread. The idea is quite simple: If nothing really special has happened (just some booring step into or unleash), the color is blue, otherwise, that is, if a breakpoint has been reached or an unhandled exception was raised, the color is red.