annotate man/lispref/edebug.texi @ 4407:4ee73bbe4f8e

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