If the variable being displayed in a Variable Window is a pointer, structure, or array, you can dive on the value. This new dive, which is called a nested dive, tells TotalView to replace the information in the Variable Window with information about the selected variable. If this information contains nonscalar data types, you can also dive on these data types. Although a typical data structure doesn’t have too many levels, repeatedly diving on data lets you follow pointer chains. That is, diving lets you see the elements of a linked list.
TotalView remembers your dives. This means that you can use the undive/redive buttons to view where you already dove.
Figure 133 – Undive/Redive Buttons
The following figure shows a Variable Window after diving into a pointer variable named sp with a type of simple*. The first Variable Window, which is called the base window, displays the value of sp. (This is Window 1 in Figure 134.)
Figure 134 – Nested Dives
The nested dive window (Window 2 in this figure) shows the structure referenced by the simple* pointer.
You can manipulate Variable Windows and nested dive windows by using the undive/redive buttons, as follows:
• To undive from a nested dive, click the undive arrow button. The previous contents of the Variable Window appear.
• To undive from all your dive operations, click the undive all arrow button.
• To redive after you undive, click the redive arrow button. TotalView restores a previously executed dive operation.
• To redive from all your undive operations, click on the Redive All arrow button.
If you dive on a variable that already has a Variable Window open, the Variable Window pops to the top of the window display.
If you select theWindow > Duplicate command, a new Variable Window appears, which is a duplicate of the current Variable Window.