Setting Breakpoints on Classes and Virtual and Overloaded Functions
The Action Point > At Location dialog box lets you set breakpoints on all functions within a class or on a virtual function. The All Methods in Class and All Virtual Functions and Overrides check boxes tell TotalView that it should set multiple breakpoints. Each place that TotalView sets a breakpoint will have its own breakpoint icon. For example, if there are ten class functions, each will have its own unique breakpoint.
TotalView tells you that the action point is set on a virtual function or a class in the Action Points tab. If you dive on the action point in this tab, TotalView brings up its Ambiguous Function dialog box so that you can select which it should display. You may want to select the Show full path names check box if you can’t tell which you want from the function’s signature.
If a function name is overloaded, the debugger sets a breakpoint on each of these functions.
If you only want breakpoints on some functions, you will need to select the breakpoint and then get to the Properties Window. Do this either by right-clicking on the breakpoint and click Properties or by selecting the Action Point > Properties command, and then click Addresses.
You can now individually add or remove breakpoints. Initially, all addresses are selected, but you can deselect them by clicking the box in the columns bar and then selecting some subset. This dialog supports selecting multiple separate items (Ctrl-Click) or a range of items (Shift-Click or click and drag). Once the desired subset is selected, right-click one of the selected items and choose Enable Selection or Disable Selection from the context menu.
In massively parallel programs the number of addresses can become very large, so the Addresses dialog has several mechanisms to help you manage the data. The search box filters the currently displayed data based on one or more space-separated strings or phrases (enclosed in quotes). Remember that data not currently displayed is not included in the filtering. It may be helpful to click the Detailed Information checkbox, which displays much more complete information, giving you more possibilities to filter on.
Finally, clicking on the column labels sorts based on the data in that column. Each click toggles between ascending and descending order. Right-clicking in the columns bar presents a context menu for displaying or hiding columns. All are initially displayed except Image. You can reorder the columns by selecting a column label and dragging it to a new location.
Setting Machine-Level Breakpoints
To set a machine-level breakpoint, you must first display assembler code. You can now select an instruction. TotalView replaces some line numbers with a dotted box (
)—this indicates the line is the beginning of a machine instruction. If a line has a line number, this is the line number that appears in the Source Pane. Since instruction sets on some platforms support variable-length instructions, you might see a different number of lines associated with a single line contained in the dotted box. The
icon appears, indicating that the breakpoint occurs before the instruction executes.
If you set a breakpoint on the first instruction after a source statement, however, TotalView assumes that you are creating a source-level breakpoint, not an assembler-level breakpoint.
If you set machine-level breakpoints on one or more instructions generated from a single source line, and then display source code in the Source Pane, TotalView displays an
icon (
Figure 84) on the line number. To see the actual breakpoint, you must redisplay assembler instructions.
When a process reaches a breakpoint, TotalView does the following:
Suspends the process.
Displays the PC arrow icon (
) over the stop sign to indicate that the PC is at the breakpoint.
Displays
At Breakpoint in the Process Window title bar and other windows.
Updates the Stack Trace and Stack Frame Panes and all Variable windows.