1 |
@page |
@page |
2 |
@node Debugger User Interface |
@node Debugging Features |
3 |
@chapter Debugger User Interface |
@chapter Debugging Features |
4 |
|
|
5 |
@c --- The title and introduction of this appendix need to |
@c --- The title and introduction of this appendix need to |
6 |
@c distinguish this clearly from the chapter on the internal |
@c distinguish this clearly from the chapter on the internal |
23 |
* Single-Step:: Execute a program or function one step at a time. |
* Single-Step:: Execute a program or function one step at a time. |
24 |
* Trace:: Print a report each time a given function is called. |
* Trace:: Print a report each time a given function is called. |
25 |
* Backtrace:: See a list of the statements that caused an error. |
* Backtrace:: See a list of the statements that caused an error. |
|
* Stacks and Frames:: Examine the state of an interrupted program. |
|
26 |
@end menu |
@end menu |
27 |
|
|
28 |
|
|
113 |
Display a backtrace of the stack saved by the last error |
Display a backtrace of the stack saved by the last error |
114 |
to the current output port. |
to the current output port. |
115 |
@end deffn |
@end deffn |
|
|
|
|
|
|
|
@node Stacks and Frames |
|
|
@section Stacks and Frames |
|
|
|
|
|
When a running program is interrupted, usually upon reaching an error or |
|
|
breakpoint, its state is represented by a @dfn{stack} of suspended |
|
|
function calls, each of which is called a @dfn{frame}. The programmer |
|
|
can learn more about the program's state at the point of interruption by |
|
|
inspecting and modifying these frames. |
|
|
|
|
|
@deffn {Scheme Procedure} stack? obj |
|
|
Return @code{#t} if @var{obj} is a calling stack. |
|
|
@end deffn |
|
|
|
|
|
@deffn {Scheme Procedure} make-stack |
|
|
@end deffn |
|
|
|
|
|
@deffn syntax start-stack id exp |
|
|
Evaluate @var{exp} on a new calling stack with identity @var{id}. If |
|
|
@var{exp} is interrupted during evaluation, backtraces will not display |
|
|
frames farther back than @var{exp}'s top-level form. This macro is a |
|
|
way of artificially limiting backtraces and stack procedures, largely as |
|
|
a convenience to the user. |
|
|
@end deffn |
|
|
|
|
|
@deffn {Scheme Procedure} stack-id stack |
|
|
Return the identifier given to @var{stack} by @code{start-stack}. |
|
|
@end deffn |
|
|
|
|
|
@deffn {Scheme Procedure} stack-ref |
|
|
@end deffn |
|
|
|
|
|
@deffn {Scheme Procedure} stack-length |
|
|
@end deffn |
|
|
|
|
|
@deffn {Scheme Procedure} frame? |
|
|
@end deffn |
|
|
|
|
|
@deffn {Scheme Procedure} last-stack-frame |
|
|
@end deffn |
|
|
|
|
|
@deffn {Scheme Procedure} frame-number |
|
|
@end deffn |
|
|
|
|
|
@deffn {Scheme Procedure} frame-source |
|
|
@end deffn |
|
|
|
|
|
@deffn {Scheme Procedure} frame-procedure |
|
|
@end deffn |
|
|
|
|
|
@deffn {Scheme Procedure} frame-arguments |
|
|
@end deffn |
|
|
|
|
|
@deffn {Scheme Procedure} frame-previous |
|
|
@end deffn |
|
|
|
|
|
@deffn {Scheme Procedure} frame-next |
|
|
@end deffn |
|
|
|
|
|
@deffn {Scheme Procedure} frame-real? |
|
|
@end deffn |
|
|
|
|
|
@deffn {Scheme Procedure} frame-procedure? |
|
|
@end deffn |
|
|
|
|
|
@deffn {Scheme Procedure} frame-evaluating-args? |
|
|
@end deffn |
|
|
|
|
|
@deffn {Scheme Procedure} frame-overflow |
|
|
@end deffn |
|