428
|
1 \input texinfo @comment -*-texinfo-*-
|
|
2 @comment %**start of header
|
|
3 @setfilename ../info/edebug.info
|
|
4 @settitle Edebug User Manual
|
|
5 @comment %**end of header
|
|
6
|
|
7 @comment ================================================================
|
|
8 @comment This file has the same style as the XEmacs Lisp Reference Manual.
|
|
9 @comment Run tex using version of `texinfo.tex' that comes with the elisp
|
|
10 @comment manual. Also, run `makeinfo' rather than `texinfo-format-buffer'.
|
|
11 @comment ================================================================
|
|
12
|
|
13 @comment smallbook
|
|
14
|
|
15 @comment tex
|
|
16 @comment \overfullrule=0pt
|
|
17 @comment end tex
|
|
18
|
|
19 @comment
|
|
20 @comment Combine indices.
|
|
21 @syncodeindex fn cp
|
|
22 @syncodeindex vr cp
|
|
23 @syncodeindex ky cp
|
|
24 @syncodeindex pg cp
|
|
25 @syncodeindex tp cp
|
|
26 @comment texinfo-format-buffer no longer ignores synindex.
|
|
27 @comment
|
|
28
|
|
29 @ifinfo
|
|
30 This file documents Edebug
|
|
31
|
|
32 This is edition 1.6 of the Edebug User Manual
|
|
33 for edebug Version 3.4,
|
|
34
|
|
35 Copyright (C) 1991,1992,1993,1994 Free Software Foundation, Inc.
|
|
36
|
|
37 Permission is granted to make and distribute verbatim copies of
|
|
38 this manual provided the copyright notice and this permission notice
|
|
39 are preserved on all copies.
|
|
40
|
|
41 @ignore
|
|
42 Permission is granted to process this file through TeX and print the
|
|
43 results, provided the printed document carries copying permission
|
|
44 notice identical to this one except for the removal of this paragraph
|
|
45 (this paragraph not being relevant to the printed manual).
|
|
46
|
|
47 @end ignore
|
|
48 Permission is granted to copy and distribute modified versions of this
|
|
49 manual under the conditions for verbatim copying, provided that the entire
|
|
50 resulting derived work is distributed under the terms of a permission
|
|
51 notice identical to this one.
|
|
52
|
|
53 Permission is granted to copy and distribute translations of this manual
|
|
54 into another language, under the above conditions for modified versions,
|
|
55 except that this permission notice may be stated in a translation approved
|
|
56 by the Foundation.
|
|
57 @end ifinfo
|
|
58 @comment
|
|
59
|
|
60 @comment
|
|
61 @setchapternewpage odd
|
|
62
|
|
63 @titlepage
|
|
64 @title Edebug User Manual
|
|
65 @subtitle A Source Level Debugger for XEmacs Lisp
|
|
66 @subtitle Edition 1.6, February 1994
|
|
67
|
|
68 @author by Daniel LaLiberte, liberte@@cs.uiuc.edu
|
|
69 @page
|
|
70 @vskip 0pt plus 1filll
|
|
71 Copyright @copyright{} 1991,1992,1993,1994 Daniel LaLiberte
|
|
72
|
|
73 @sp 2
|
|
74 This is edition 1.6 of the @cite{Edebug User Manual}
|
|
75 for edebug Version 3.4, February 1994
|
|
76
|
|
77
|
|
78 @sp 2
|
|
79
|
|
80 Permission is granted to make and distribute verbatim copies of
|
|
81 this manual provided the copyright notice and this permission notice
|
|
82 are preserved on all copies.
|
|
83
|
|
84 Permission is granted to copy and distribute modified versions of this
|
|
85 manual under the conditions for verbatim copying, provided that the entire
|
|
86 resulting derived work is distributed under the terms of a permission
|
|
87 notice identical to this one.
|
|
88
|
|
89 Permission is granted to copy and distribute translations of this manual
|
|
90 into another language, under the above conditions for modified versions,
|
|
91 except that this permission notice may be stated in a translation approved
|
|
92 by this author.
|
|
93 @end titlepage
|
|
94 @page
|
|
95
|
|
96
|
|
97 @node Top, Edebug, (dir), (dir)
|
|
98 @chapter Edebug User Manual
|
|
99
|
|
100 Edebug is a source-level debugger for XEmacs Lisp programs.
|
|
101
|
|
102
|
|
103 @menu
|
|
104 * Edebug:: Edebug
|
|
105 * Bugs and Todo List:: Bugs and Todo List
|
|
106 * Index:: Index
|
|
107 @end menu
|
|
108
|
|
109 @c from included file:
|
|
110 @c @node Edebug, Bugs and Todo List, Top, Top
|
|
111 @c @section Edebug
|
|
112
|
|
113 @include edebug-inc.texi
|
|
114
|
|
115
|
|
116 @node Bugs and Todo List, Index, Edebug, Top
|
|
117 @section Bugs and Todo List
|
|
118
|
|
119 A debugger should be as bug free as possible, and I strive to achieve
|
|
120 perfection. But Edebug is fairly complex and I don't understand all of
|
|
121 it any more, so bugs happen. Please report anything suspicious to save
|
|
122 someone else the trouble of finding the same bug. Email to
|
|
123 liberte@@cs.uiuc.edu. There is also a mailing list for Edebug beta
|
|
124 testers: edebug-request@@cs.uiuc.edu.
|
|
125
|
|
126 @cindex bugs in Edebug
|
|
127 If you want to run Edebug on Edebug itself, often it is easiest to first
|
|
128 copy a reliable version of @file{edebug.el} into another file, say
|
|
129 @file{fdebug.el}, and replace all strings @samp{edebug} with
|
|
130 @samp{fdebug}, then evaluate the fdebug buffer and run Fdebug on
|
|
131 the buggy Edebug.
|
|
132
|
|
133 The following is a list of things I might do in the future, but often I
|
|
134 do other things not on the list as I discover the need for them. Send
|
|
135 me your suggestions and priorities.
|
|
136
|
|
137 @itemize @bullet
|
|
138
|
|
139 @item
|
|
140 Bug: I've noticed that the point of some buffers is reset to the point
|
|
141 of some other buffer, but I haven't been able to repeat it so perhaps
|
|
142 it is fixed.
|
|
143
|
|
144 @item
|
|
145 There may be a bug in the trace buffer display. It should display as
|
|
146 much as it can of the bottom of the buffer, but I think it scrolls off
|
|
147 sometimes.
|
|
148
|
|
149 There is a bug in window updating when there is both a trace buffer
|
|
150 and an evaluation list - the source buffer doesn't get displayed.
|
|
151
|
444
|
152 @item
|
428
|
153 Killing and reinserting an instrumented definition or parts of
|
|
154 it leaves marks in the buffer which may confuse Edebug later.
|
|
155
|
|
156 @item
|
|
157 Design problem: The position of definitions with complex names (e.g.
|
|
158 defmethod) cannot be remembered properly, but nor can the names of such
|
|
159 definitions be determined from calls of them.
|
|
160
|
|
161 @item
|
|
162 After some errors, with @code{edebug-on-error} non-@code{nil}, continuing
|
|
163 execution succeeds, returning @code{nil}.
|
|
164
|
|
165 @item
|
|
166 There are some interesting problems with defining or executing keyboard
|
|
167 macros across the Edebug activation boundary.
|
|
168
|
|
169 @item
|
|
170 There are no other known bugs, so if you find any, please let me know.
|
|
171 There is nothing worse than a buggy debugger!
|
|
172
|
444
|
173 @item
|
428
|
174 I need to rethink locally binding @code{debug-on-error},
|
|
175 @code{debug-on-quit}, and keyboard macro state variables. Should we
|
|
176 allow the global values to be changed by the user?
|
|
177
|
|
178 @item
|
|
179 "(" in the first column of doc strings messes up edebug reading.
|
|
180 But no more than normal.
|
|
181
|
|
182 @item
|
|
183 There could be a command to return a value from the debugger -
|
|
184 particularly useful for errors.
|
|
185
|
|
186 @item
|
|
187 Let me know if you find any side effects that could be avoided
|
|
188 or at least documented in the manual.
|
|
189 Also @pxref{The Outside Context}.
|
|
190
|
|
191 @item
|
|
192 @cindex selective display
|
|
193 Make edebug work with selective display - don't stop in hidden lines.
|
|
194
|
|
195 @item
|
|
196 Debug just one or selected subexpressions of a definition - the rest is
|
|
197 evalled normally.
|
|
198
|
|
199 @item
|
|
200 Should @code{overlay-arrow-position} and @code{-string} be buffer local?
|
|
201 It would be better if they could be window-local.
|
|
202
|
|
203 @item
|
|
204 Use copy of @code{current-local-map} instead of @code{emacs-lisp-mode-map}
|
|
205 (but only copy the first time after lower level command - to save time).
|
|
206
|
|
207 @item
|
|
208 Better integration with standard debug.
|
|
209
|
|
210 @item
|
444
|
211 Use @code{inhibit-quit} while edebugging?
|
428
|
212
|
|
213 @item
|
|
214 Crawl mode would @code{sit-for} 0 or 1 in the outside window configuration
|
|
215 between each edebug step.
|
|
216 Maybe it should be a separate option that applies to trace as well.
|
|
217
|
|
218 @item
|
|
219 Customizable @code{sit-for} time. Less than a second would be nice.
|
|
220
|
|
221 @item
|
|
222 Generalize step, trace, Trace-fast to one command with argument for
|
|
223 @code{sit-for} time.
|
|
224 Generalize go, continue, Continue-fast to another command with argument
|
|
225
|
|
226 @item
|
|
227 Counting conditions - stop after n iterations. You can do it manually now
|
|
228 with conditional breakpoints.
|
|
229
|
|
230 @item
|
|
231 Performance monitoring - summarize trace data.
|
|
232
|
|
233 @item
|
|
234 Preserve breakpoints across instrumenting.
|
|
235 You can now install calls to @code{edebug} in your code.
|
|
236
|
|
237 @item
|
|
238 After stepping into code not previously instrumented (with
|
|
239 @code{edebug-step-in}), maybe restore to non-instrumented code after
|
|
240 entered.
|
|
241
|
|
242 @item
|
|
243 Optionally replace expressions with results in a separate buffer from
|
|
244 the source code. This idea is based on discussions with Carl Witty
|
|
245 regarding his stepper debugger. Also, unparse code into its own buffer
|
|
246 if source code is not available, or if user wishes to use
|
|
247 replace-with-results mode.
|
|
248
|
|
249 @item
|
|
250 Preserve previous bindings of local variables, and allow user to jump
|
|
251 back to previous frames, particularly binding frames (i.e. @code{let},
|
|
252 @code{condition-case}, function and macro calls) to view values at that
|
|
253 frame. What about buffer local variables? It would be simpler to have
|
|
254 access to the Lisp stack.
|
|
255
|
|
256 Variables display, like the evaluation list but automatically display
|
|
257 all local variables and values.
|
|
258
|
|
259 @item
|
|
260 Investigate minimal instrumentation that doesn't call edebug functions
|
|
261 but instead sets edebug index and result variables. Stepping is done
|
|
262 through standard debugger features such as setting
|
|
263 @code{debug-on-next-call}. Breakpoints are done by modifying code as
|
|
264 well as calling @code{backtrace-debug} for active frames.
|
|
265
|
|
266 @item
|
|
267 Edebugging of uninstrumented code. Similar to above minimal
|
|
268 instrumentation but find out where we are at each edebug call by looking
|
|
269 in a map from each list form in the code to its position.
|
|
270 Problem is symbols are not unique.
|
|
271
|
|
272 @item
|
|
273 Investigate hiding debugger internal stack frames. This is both to
|
|
274 simplify the standard debugger (which currently must be byte compiled to
|
|
275 work) and to better support the integration of edebug and the standard
|
|
276 debugger.
|
|
277
|
|
278 @item
|
|
279 Fix Emacs' lack of stack checking. The current workaround of
|
|
280 incrementing @code{max-lisp-eval-depth} and @code{max-specpdl-size} is
|
|
281 unsafe.
|
|
282
|
|
283 @item
|
|
284 Although variables can't be tracked everywhere, watchpoints would be
|
|
285 nice for variables that edebug can monitor. That is, when the value of
|
|
286 a specific variable changes, edebug would stop. This can be done now
|
|
287 with the @code{edebug-global-break-condition}, though it is awkward.
|
|
288
|
|
289 @item
|
|
290 How about a command to add the previous sexp (?) to the eval-list?
|
|
291
|
|
292 @item
|
|
293 Highlight all instrumented code, breakpoints, and subexpressions about
|
|
294 to be evaluated or just evaluated. This should be done in a way that
|
|
295 works with Epoch, XEmacs, and Emacs 19.
|
|
296
|
|
297 @end itemize
|
|
298
|
|
299
|
|
300 @page
|
|
301 @node Index, , Bugs and Todo List, Top
|
|
302 @section Index
|
|
303
|
|
304 @printindex cp
|
|
305
|
|
306 @comment To prevent the Concept Index's last page from being numbered "i".
|
|
307 @page
|
|
308
|
|
309 @contents
|
|
310 @bye
|