*** empty log message ***
[bpt/guile.git] / doc / ref / scheme-debug.texi
CommitLineData
a0e07ba4
NJ
1@page
2@node Debugging
3@chapter Internal Debugging Interface
4
5--- The name of this chapter needs to clearly distinguish it
6 from the appendix describing the debugger UI. The intro
7 should have a pointer to the UI appendix.
8
8f85c0c6
NJ
9@deffn {Scheme Procedure} display-error stack port subr message args rest
10@deffnx {C Function} scm_display_error (stack, port, subr, message, args, rest)
a0e07ba4
NJ
11Display an error message to the output port @var{port}.
12@var{stack} is the saved stack for the error, @var{subr} is
85a9b4ed 13the name of the procedure in which the error occurred and
a0e07ba4
NJ
14@var{message} is the actual error message, which may contain
15formatting instructions. These will format the arguments in
16the list @var{args} accordingly. @var{rest} is currently
17ignored.
18@end deffn
19
8f85c0c6
NJ
20@deffn {Scheme Procedure} display-application frame [port [indent]]
21@deffnx {C Function} scm_display_application (frame, port, indent)
a0e07ba4
NJ
22Display a procedure application @var{frame} to the output port
23@var{port}. @var{indent} specifies the indentation of the
24output.
25@end deffn
26
8f85c0c6
NJ
27@deffn {Scheme Procedure} display-backtrace stack port [first [depth]]
28@deffnx {C Function} scm_display_backtrace (stack, port, first, depth)
a0e07ba4
NJ
29Display a backtrace to the output port @var{port}. @var{stack}
30is the stack to take the backtrace from, @var{first} specifies
31where in the stack to start and @var{depth} how much frames
32to display. Both @var{first} and @var{depth} can be @code{#f},
33which means that default values will be used.
34@end deffn
35
8f85c0c6
NJ
36@deffn {Scheme Procedure} backtrace
37@deffnx {C Function} scm_backtrace ()
a0e07ba4
NJ
38Display a backtrace of the stack saved by the last error
39to the current output port.
40@end deffn
41
8f85c0c6 42@deffn {Scheme Procedure} malloc-stats
a0e07ba4
NJ
43Return an alist ((@var{what} . @var{n}) ...) describing number
44of malloced objects.
4c7fbdfb 45@var{what} is the second argument to @code{scm_gc_malloc},
a0e07ba4
NJ
46@var{n} is the number of objects of that type currently
47allocated.
48@end deffn
49
8f85c0c6
NJ
50@deffn {Scheme Procedure} debug-options-interface [setting]
51@deffnx {C Function} scm_debug_options (setting)
a0e07ba4
NJ
52Option interface for the debug options. Instead of using
53this procedure directly, use the procedures @code{debug-enable},
54@code{debug-disable}, @code{debug-set!} and @var{debug-options}.
55@end deffn
56
8f85c0c6
NJ
57@deffn {Scheme Procedure} with-traps thunk
58@deffnx {C Function} scm_with_traps (thunk)
a0e07ba4
NJ
59Call @var{thunk} with traps enabled.
60@end deffn
61
8f85c0c6
NJ
62@deffn {Scheme Procedure} memoized? obj
63@deffnx {C Function} scm_memoized_p (obj)
a0e07ba4
NJ
64Return @code{#t} if @var{obj} is memoized.
65@end deffn
66
8f85c0c6
NJ
67@deffn {Scheme Procedure} unmemoize m
68@deffnx {C Function} scm_unmemoize (m)
a0e07ba4
NJ
69Unmemoize the memoized expression @var{m},
70@end deffn
71
8f85c0c6
NJ
72@deffn {Scheme Procedure} memoized-environment m
73@deffnx {C Function} scm_memoized_environment (m)
a0e07ba4
NJ
74Return the environment of the memoized expression @var{m}.
75@end deffn
76
8f85c0c6
NJ
77@deffn {Scheme Procedure} procedure-name proc
78@deffnx {C Function} scm_procedure_name (proc)
a0e07ba4
NJ
79Return the name of the procedure @var{proc}
80@end deffn
81
8f85c0c6
NJ
82@deffn {Scheme Procedure} procedure-source proc
83@deffnx {C Function} scm_procedure_source (proc)
a0e07ba4
NJ
84Return the source of the procedure @var{proc}.
85@end deffn
86
8f85c0c6
NJ
87@deffn {Scheme Procedure} procedure-environment proc
88@deffnx {C Function} scm_procedure_environment (proc)
a0e07ba4
NJ
89Return the environment of the procedure @var{proc}.
90@end deffn
91
8f85c0c6
NJ
92@deffn {Scheme Procedure} debug-object? obj
93@deffnx {C Function} scm_debug_object_p (obj)
a0e07ba4
NJ
94Return @code{#t} if @var{obj} is a debug object.
95@end deffn
96
8f85c0c6
NJ
97@deffn {Scheme Procedure} frame-arguments frame
98@deffnx {C Function} scm_frame_arguments (frame)
a0e07ba4
NJ
99Return the arguments of @var{frame}.
100@end deffn
101
8f85c0c6
NJ
102@deffn {Scheme Procedure} frame-evaluating-args? frame
103@deffnx {C Function} scm_frame_evaluating_args_p (frame)
a0e07ba4
NJ
104Return @code{#t} if @var{frame} contains evaluated arguments.
105@end deffn
106
8f85c0c6
NJ
107@deffn {Scheme Procedure} frame-next frame
108@deffnx {C Function} scm_frame_next (frame)
a0e07ba4
NJ
109Return the next frame of @var{frame}, or @code{#f} if
110@var{frame} is the last frame in its stack.
111@end deffn
112
8f85c0c6
NJ
113@deffn {Scheme Procedure} frame-number frame
114@deffnx {C Function} scm_frame_number (frame)
a0e07ba4
NJ
115Return the frame number of @var{frame}.
116@end deffn
117
8f85c0c6
NJ
118@deffn {Scheme Procedure} frame-overflow? frame
119@deffnx {C Function} scm_frame_overflow_p (frame)
a0e07ba4
NJ
120Return @code{#t} if @var{frame} is an overflow frame.
121@end deffn
122
8f85c0c6
NJ
123@deffn {Scheme Procedure} frame-previous frame
124@deffnx {C Function} scm_frame_previous (frame)
a0e07ba4
NJ
125Return the previous frame of @var{frame}, or @code{#f} if
126@var{frame} is the first frame in its stack.
127@end deffn
128
8f85c0c6
NJ
129@deffn {Scheme Procedure} frame-procedure frame
130@deffnx {C Function} scm_frame_procedure (frame)
a0e07ba4
NJ
131Return the procedure for @var{frame}, or @code{#f} if no
132procedure is associated with @var{frame}.
133@end deffn
134
8f85c0c6
NJ
135@deffn {Scheme Procedure} frame-procedure? frame
136@deffnx {C Function} scm_frame_procedure_p (frame)
a0e07ba4
NJ
137Return @code{#t} if a procedure is associated with @var{frame}.
138@end deffn
139
8f85c0c6
NJ
140@deffn {Scheme Procedure} frame-real? frame
141@deffnx {C Function} scm_frame_real_p (frame)
a0e07ba4
NJ
142Return @code{#t} if @var{frame} is a real frame.
143@end deffn
144
8f85c0c6
NJ
145@deffn {Scheme Procedure} frame-source frame
146@deffnx {C Function} scm_frame_source (frame)
a0e07ba4
NJ
147Return the source of @var{frame}.
148@end deffn
149
8f85c0c6
NJ
150@deffn {Scheme Procedure} frame? obj
151@deffnx {C Function} scm_frame_p (obj)
a0e07ba4
NJ
152Return @code{#t} if @var{obj} is a stack frame.
153@end deffn
154
8f85c0c6
NJ
155@deffn {Scheme Procedure} last-stack-frame obj
156@deffnx {C Function} scm_last_stack_frame (obj)
a0e07ba4
NJ
157Return a stack which consists of a single frame, which is the
158last stack frame for @var{obj}. @var{obj} must be either a
159debug object or a continuation.
160@end deffn
161
8f85c0c6
NJ
162@deffn {Scheme Procedure} make-stack obj . args
163@deffnx {C Function} scm_make_stack (obj, args)
a0e07ba4
NJ
164Create a new stack. If @var{obj} is @code{#t}, the current
165evaluation stack is used for creating the stack frames,
166otherwise the frames are taken from @var{obj} (which must be
167either a debug object or a continuation).
168
169@var{args} should be a list containing any combination of
170integer, procedure and @code{#t} values.
171
172These values specify various ways of cutting away uninteresting
173stack frames from the top and bottom of the stack that
174@code{make-stack} returns. They come in pairs like this:
175@code{(@var{inner_cut_1} @var{outer_cut_1} @var{inner_cut_2}
176@var{outer_cut_2} @dots{})}.
177
178Each @var{inner_cut_N} can be @code{#t}, an integer, or a
179procedure. @code{#t} means to cut away all frames up to but
180excluding the first user module frame. An integer means to cut
181away exactly that number of frames. A procedure means to cut
182away all frames up to but excluding the application frame whose
183procedure matches the specified one.
184
185Each @var{outer_cut_N} can be an integer or a procedure. An
186integer means to cut away that number of frames. A procedure
187means to cut away frames down to but excluding the application
188frame whose procedure matches the specified one.
189
190If the @var{outer_cut_N} of the last pair is missing, it is
191taken as 0.
192@end deffn
193
8f85c0c6
NJ
194@deffn {Scheme Procedure} stack-id stack
195@deffnx {C Function} scm_stack_id (stack)
a0e07ba4
NJ
196Return the identifier given to @var{stack} by @code{start-stack}.
197@end deffn
198
8f85c0c6
NJ
199@deffn {Scheme Procedure} stack-length stack
200@deffnx {C Function} scm_stack_length (stack)
a0e07ba4
NJ
201Return the length of @var{stack}.
202@end deffn
203
8f85c0c6
NJ
204@deffn {Scheme Procedure} stack-ref stack index
205@deffnx {C Function} scm_stack_ref (stack, index)
9401323e 206Return the @var{index}'th frame from @var{stack}.
a0e07ba4
NJ
207@end deffn
208
8f85c0c6
NJ
209@deffn {Scheme Procedure} stack? obj
210@deffnx {C Function} scm_stack_p (obj)
a0e07ba4
NJ
211Return @code{#t} if @var{obj} is a calling stack.
212@end deffn
213
214
215@c Local Variables:
216@c TeX-master: "guile.texi"
217@c End: