BBV - a BugBane Viewer
Russ Atkinson
February 23, 1983
BBV (BugBane Viewer) is a "control panel" interface to debugging facilities provided by BugBane (see BugBane.doc). The commands are currently organized into five categories: Show Stack, Walk Stack, Control, Breaks, and Display.
Many of the commands are performed on the current action, which is normally set by encountering a breakpoint or an uncaught signal. The current action is displayed just above the command panel. Display output typically goes to the BBV typescript. Output can be aborted by clicking the Stop! command.
Note that as various actions occur, they may occur nearly simultaneously in multiple processes. Further, they can be proceeded, aborted, or ignored independently. Once an action has occurred, it is pending until it is either proceeded or aborted.
BBV is temporary, since most of its functionality has been moved to the UserExec. It will remain as long as there is need for a backup mechanism for examining actions and stacks.
Show Stack commands
These commands are used to display the control stack of the current action.
This frame - displays the most recent frame of the current action, plus the arguments and innermost variables. Other variables must be accessed by name.
Full stack - displays the whole stack for the current action, omitting arguments and variables. This is useful when a concise display of the stack is desired.
+ Args - displays the whole stack for the current action, including arguments for procedures. This display has more information than the Full stack command, but it is significantly slower.
+ Vars - displays the whole stack for the current action, including arguments for procedures, and top-level variables in local frames. This display has the most information, but it is the slowest.
Walk Stack commands
These commands are used to set the interpretation context in the control stack of the current action.
Restart - sets the context to the most recently created frame for the current action.
Next/Prev - sets the context to the next (previous) frame (if any) in the control stack. Next is performed if the left (red) button on the mouse is clicked, while Prev is performed if the right (blue) button on the mouse is clicked. Note that Next moves forward in resumption time, and backward in frame creation time, while Prev moves backward in resumption time, and forward in frame creation time. Because of the way that frames are linked, Next is faster than Prev.
+ Args - sets the context to the next (previous) frame (if any) in the control stack. The arguments for that frame are also displayed.
+ Vars - sets the context to the next (previous) frame (if any) in the control stack. The arguments and top-level variables for that frame are also displayed.
Control commands
These commands are used to set the interpretation context in the control stack of the current action.
Source - attempts to display the source for the current context. This consists of creating or opening a window on the appropriate source file and setting the selection to a point near where control has stopped for the current action. If there is no current action, the Source command will attempt to display the source for the current default global frame.
Proceed - allows the current action to proceed. If the action was a breakpoint, control will proceed normally from that breakpoint. If the action was an uncaught signal, the world-swap debugger (currently CoPilot) will be called. This command has no effect if there is no current action. WARNING: this command may not interact well with the UserExec or concurrent evaluations. Use of the Work Area buttons is preferred.
Abort - aborts the current action by causing the ABORTED error to be raised in the process associated with the current action. This command has no effect if there is no current action. WARNING: this command may not interact well with the UserExec or concurrent evaluations. Use of the Work Area buttons is preferred.
Next action - selects the next most recent pending action as the current action. If the current action was the least recent, then the most recent action becomes the current action. This command has no effect if there are no actions pending. There is always a null action in the action list.
Breaks commands
These commands are used to set an clear breakpoints according to the current selection. The assumed world is the one for the current action (or for the current global frame if there is no action).
Set - attempts to set a normal breakpoint at (or near) the point selected. Remember that breakpoints can only be set in a module if it has been loaded and started, so it is advised that all modules be started in every configuration.
Clear - clears the breakpoint indicated by the current selection.
Clear * - clears all breakpoints set by BBV. It does not clear other kinds of breakpoints.
on/off - enables (or disables) the breakpoint indicated by the current selection, based on which button was clicked (red for on, right for off).
Options
Except for allVars, these commands set and clear options used by the breakpoint commands. An option is toggled by clicking either the left or right mouse buttons. An enabled option has a black background. All options are initially disabled.
allVars - when enabled, makes stack frame printing that includes variables try to get all of the variables in a frame, rather than just the top-level variablesFor Cedar 3.2
Entry - when enabled, attempts to force the breakpoint indicated by the current selection to be at the entry point for the procedure containing the current selection.
Exit - when enabled, attempts to force the breakpoint indicated by the current selection to be at the exit point for the procedure containing the current selection. If both Entry and Exit are enabled, then breakpoints at both the entry and the exit are indicated.
1-shot - indicates that a breakpoint set by Set should disable itself after it occurs. A disabled breakpoint can be re-enabled by the on/off command.
Display commands
These commands are used to display various debugger information.
Breaks - displays the current breakpoints to the default executive. The break index, the procedure name, and the source index are listed, as in:
# 1 in BugBaneTests.TestAnyCatch (source: 4066)
Actions - displays the current pending actions to the default executive. Each action gets two lines, as in:
**** Action #3 (kind: break, process: 227B)
Break #1 in BugBaneTests.TestAnyCatch(lf: 4454B, pc: 1132B)
Signal - displays the arguments for the uncaught signal for the current action, if the current action is an uncaught signal or the current context is for a catch frame.
Menu commands
These commands appear at the top of the BBV viewer. Close, Grow, <-->, and Destroy perform the standard viewer functions. Most users can ignore the following commands.
Smaller - makes the BBV viewer smaller.
Bigger - makes the BBV viewer bigger.
Stop! - stops printing to the BBV typescript. There is no interaction between the BBV Stop! button and the UserExecutive Stop button.
Recent changes
For Cedar 4.0
Openr & Findr commands have been placed in BBV.
BBV no longer presents an icon. To get a BBV viewer, use the bbv command.
For Cedar 3.5
Breakpoint setting now works for remote machines. The world is derived from the current action (or the current global frame).
All operations in exported interfaces (particularly BBVOps & BBVForUserExec) take a world argument where appropriate.
More minor bugs have been fixed.
For Cedar 3.4
Some minor bugs have been fixed. One annoying bug that is now gone prevented setting breakpoints using remote source files.
The allVars option has been added.
For Cedar 3.2
The Source command now attempts to bringover remote source files if they are in the release. The file CedarSource.VersionMap must be present (and in dumped VersionMap format) for this facility to be enabled. Source version checking is now performed.
Feedback regarding commands has been improved.
Next frame has become Next/Prev to allow stack walking in either direction.
Robustness and error messages have been somewhat improved.
1-shot breakpoints have been added, with extra commands to make them useful.
Entry and Exit options have been added.