Mercurial > hg > xemacs-beta
comparison man/lispref/edebug.texi @ 428:3ecd8885ac67 r21-2-22
Import from CVS: tag r21-2-22
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:28:15 +0200 |
parents | |
children | 576fb035e263 |
comparison
equal
deleted
inserted
replaced
427:0a0253eac470 | 428:3ecd8885ac67 |
---|---|
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 | |
152 @item | |
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 | |
173 @item | |
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 | |
211 Use @code{inhibit-quit} while edebugging? | |
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 |