Identifies the currently active routine calls. Format SHOW CALLS [integer]
1 – Parameters
integer A decimal integer that specifies the number of routine calls to be identified. If you omit the parameter, the debugger identifies all routine calls for which it has information.
2 – Qualifiers
2.1 /IMAGE
Displays the image name for each active call on the call stack.
3 – Description
The SHOW CALLS command shows a traceback that lists the sequence of active routine calls that lead to the routine in which execution appears suspended. Each recursive routine call is shown in the display, that is, you can use the SHOW CALLS command to examine the chain of recursion. SHOW CALLS displays one line of information for each call frame on the call stack, starting with the most recent call. The top line identifies the currently executing routine, the next line identifies its caller, the following line identifies the caller of the caller, and so on. Even if your program contains no routine calls, the SHOW CALLS command displays an active call because your program has at least one stack frame built for it when it is first activated. On Alpha and Integrity server processors, you also usually see a system and sometimes a DCL base frame. Note that if the SHOW CALLS display shows no active calls, either your program has terminated or the call stack has been corrupted. As your program executes, whenever a call is made to a routine a new call frame is built on the stack(s) or in the register set. Each call frame stores information about the calling or current routine. For example, the frame PC value enables the SHOW CALLS command to symbolize to module and routine information. On Alpha processors, a routine invocation results in either a stack frame procedure (with a call frame on the memory stack), a register frame procedure (with a call frame stored in the register set), or a null frame procedure (without a call frame). On Integrity server processors, a routine invocation can result in a memory stack frame and/or a register stack frame. That is, there two stacks on Integrity servers, register and memory. An Integrity server routine invocation could result in call frames on one or the other or both of those stacks. Also, an Integrity server leaf routine invocation (that does not itself make calls) can result in a null frame procedure, without a call frame on either stack. SHOW CALLS provides one line of information, regardless of the which stack or register results. (See the examples below.)
4 – Description, Continued...
The following information is provided for each line of the SHOW CALLS display: o The name of the enclosing module. An asterisk (*) to the left of a module name indicates that the module is set. o The name of the calling routine, provided the module is set (the first line shows the currently executing routine). o The line number where the call was made in that routine, provided the module is set (the first line shows the line number at which execution is suspended). o The value of the PC in the calling routine at the time that control was transferred to the called routine. On VAX processors, the PC value is shown as a memory address relative to the nearest preceding symbol value (for example, a routine) and also as an absolute address. On Alpha and Integrity server processors, the PC is shown as a memory address relative to the first code address in the module and also as an absolute address. When you specify the /IMAGE qualifier, the debugger first does a SET IMAGE command for each image that has debug information (that is, it was linked using the /DEBUG or /TRACEBACK qualifier). The debugger then displays the image name for each active call on the calls stack. The output display has been expanded and displays the image name in the first column. The debugger suppresses the share$image_name module name, because that information is provided by the /IMAGE qualifier. The SET IMAGE command lasts only for the duration of the SHOW CALLS/IMAGE command. The debugger restores the set image state when the SHOW CALLS/IMAGE command is complete. Related commands: SHOW SCOPE SHOW STACK
5 – Examples
1.DBG> SHOW CALLS module name routine name line rel PC abs PC *MAIN FFFF 31 00000000000002B8 00000000000203C4 -the above appears to be a null frame in the same scope as the frame below *MAIN MAIN 13 00000000000000A8 00000000000200A8 0000000000000000 FFFFFFFF8255A1F8 This example has been reformatted for Help, and may appear slightly different from the actual output display. This example is on an Alpha system. Note that sections of routine prologues and epilogues appear to the debugger to be null frames. The portion of the prologue before the change in the frame pointer (FP) and the portion of the epilogue after restoration of the FP each look like a null frame, and are reported accordingly. 2.DBG> SHOW CALLS module name routine name line rel PC abs PC *MAIN FFFF 18 0000000000000190 0000000000010190 *MAIN MAIN 14 0000000000000180 0000000000010180 FFFFFFFF80C2A200 FFFFFFFF80C2A200 This example has been reformatted for Help, and may appear slightly different from the actual output display. This example is on Integrity servers. Note that Integrity server prologues do not appear to be null frames to the debugger.