General debugging support and Eclipse integration

 

When a currently executing StreamIt program is suspended at a breakpoint or watchpoint, there are five windows of interest to the user—the Debug, Variable, StreamIt text editor, Stream Graph, and Overview of Stream Graph windows.  When a StreamIt program becomes suspended, all of these windows will display, as a highlight, the currently executing part of the program (respectively, a stack frame, a variable, a line of code, a stream element, and a scaled down stream element), as seen in Figure 11.  For the graph windows, if the stream element to be highlighted was not visible before the highlighting occurred, the graph would be expanded to show the stream element (described in section 3.5) and the graph window scrolled to make the element visible.

 

Figure 11:  A StreamIt program paused at a breakpoint.

 

The highlights in each of the windows are “linked,” such that the user’s selection in one window will propagate to the other windows.  For example, if the user selects a stack frame in the Debug window, the corresponding variable in the Variable window and the corresponding stream element in the graphs are highlighted, and vice versa.  These features are intended to (1) show which element is currently executing, (2) convey the correspondence between each of the windows, and (3) offer another way for the user to navigate the StreamIt graph.  Representing highlights as a blue background with white letters is externally consistent with other windows in the Eclipse platform (see the implementation section below).

 

This “linking” of the windows is also apparent in several other areas of the tool.  For example, like the Variable window, the graph windows only have input when the program is running and the names of the stream elements are the same names found in the Variable window.  The id information next to each name corresponds to the ids in the Variable window.  Ids are useful for programs that use the same stream element multiple times, as these elements are indistinguishable otherwise.