Under the root node, at the first level of expansion, the stack pane lists the call frames in the backtrace. The most recently executed call frame is listed first.
Each call frame is represented by the name of the function or method whose call created the frame. If you select a name, the source code associated with it (if any) appears in the pane opposite. See Section 6.2.3 on page 101 for details of this pane.
Beside each frame name is an icon indicating the sort of call that created the frame:
| This was a call to a method selected through run-time dispatch. |
| This was a direct call, either to a method whose dispatch details were all worked out at compile time, or to a method constant (a function). |
| This was a call to a foreign (non-Dylan) function. Some of the calls that the Dylan run-time system makes are foreign calls. |
| This arrow denotes the position of the stack pointer in the thread. It will always be at the top of the list of frames. |
When debugging, be aware that some function call frames may be optimized away by, for example, inlining or tail-call optimization. This is particularly important to note if you are compiling in Production mode, where more optimization occurs than in Interactive Development mode.
The debugger also hides certain stack frames concerned with activities like method dispatch, since these are of no interest in debugging user applications.
You can filter other frames out of the backtrace if you wish, according either to their type or to their names. For instance, you can filter out all foreign call frames or all frames whose names contain a particular string. See "Stack options" on page 129.
Figure 6.3 The debugger's stack pane.