<< Prev | - Up - | Next >> |
Picture 2.1 shows the main window after Ozcar has been invoked for the first time.
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.
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:
The thread is runnable. This means it can be scheduled by the virtual machine. Such a thread is printed in green.
The thread waits for a synchronization condition. It cannot be scheduled by the virtual machine. Such a thread is printed in yellow.
The thread got an unhandled exception. Such a thread is printed in red.
The thread is dead. Such a thread is printed in grey.
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.
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.
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.
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.
At the bottom of the main window, there is a Status Line which is used to display miscellaneous useful information.
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.
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.
<< Prev | - Up - | Next >> |