annotate admin/emacs-pretesters @ 48382:d4986198a59a

(struct face): Add `overstrike' field.
author Miles Bader <miles@gnu.org>
date Sun, 17 Nov 2002 23:46:26 +0000
parents a3601f81ab2a
children 23a1cea22d13
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
44873
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
1 Here are the guidelines for being an Emacs pretester.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
2 If you would like to do this, say so, and I'll add you to
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
3 the pretest list.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
4
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
5
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
6 Information for Emacs Pretesters
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
7
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
8 The purpose of Emacs pretesting is to verify that the new Emacs
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
9 distribution, about to be released, works properly on your system *with
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
10 no change whatever*, when installed following the precise
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
11 recommendations that come with the Emacs distribution.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
12
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
13 Here are some guidelines on how to do pretesting so as to make it
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
14 helpful. All of them follow from common sense together with the
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
15 nature of the purpose and the situation.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
16
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
17 Please save this file, and reread it when a new series of pretests
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
18 starts.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
19
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
20 * Get the pretest from gnu/emacs/emacs-MM.NN.tar.gz and
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
21 gnu/emacs/leim-MM.NN.tar.gz on alpha.gnu.org.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
22
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
23 * After a few days of testing, if there are no problems, please report
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
24 that Emacs works for you and what configuration you are testing it on.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
25
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
26 * If you want to communicate with other pretesters, send mail to
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
27 emacs-pretesters@gnu.org. I don't use that mailing list when I send
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
28 to you because I've found that mailing lists tend to amplify random
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
29 noise into long discussions or even arguments, and that can waste a
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
30 lot of time. But when you have a reason to ask other pretesters for
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
31 help, you can do it that way.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
32
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
33 * It is absolutely vital that you tell me about even the smallest
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
34 change or departure from the standard sources and procedure.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
35
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
36 Otherwise, you are not testing the same program that I asked you to
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
37 test. Testing a different program is usually of no use whatever. It
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
38 can even cause trouble if you fail to tell me that you tested some
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
39 other program instead of what I am about to release. I might think
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
40 that Emacs works, when in fact it has not even been tried, and might
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
41 have a glaring fault.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
42
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
43 * Don't use a site-load.el file or a site-init.el file when you pretest.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
44 Using either of those files means you are not testing Emacs as a typical
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
45 site would use it.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
46
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
47 Actually, it does no harm to test Emacs with such customizations *as
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
48 well as* testing it "out of the box". Anything you do that could find
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
49 a bug is useful, as long as you make sure I know exactly what you did.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
50 The important point is that testing with local changes is no
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
51 substitute for testing Emacs exactly as it is distributed.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
52
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
53 * Even changing the compilation options counts as a change in the
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
54 program. The Emacs sources specify which compilation options to use.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
55 Some of them are specified in makefiles, and some in machine-specific
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
56 configuration files. They also give you ways to override this--but if
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
57 you do, then you are not testing what ordinary users will do.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
58 Therefore, when pretesting, it is vital to test with the default
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
59 compilation options.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
60
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
61 (Testing with a different set of options can be useful *in addition*,
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
62 but not *instead of* the default options.)
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
63
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
64 * The machine and system configuration files of Emacs are parts of
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
65 Emacs. So when you test Emacs, you need to do it with the
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
66 configuration files that come with Emacs.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
67
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
68 If Emacs does not come with configuration files for a certain machine,
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
69 and you test it with configuration files that don't come with Emacs,
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
70 this is effectively changing Emacs. Because the crucial fact about
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
71 the planned release is that, without changes, it doesn't work on that
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
72 machine.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
73
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
74 To make Emacs work on that machine, I would need to install new
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
75 configuration files. That is not out of the question, since it is
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
76 safe--it certainly won't break any other machines that already work.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
77 But you will have to rush me the legal papers to give the FSF
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
78 permission to use such a large piece of text.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
79
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
80 * Look in the etc/MACHINES file.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
81
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
82 The etc/MACHINES file says which configuration files to use for your
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
83 machine, so use the ones that are recommended. If you guess, you might
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
84 guess wrong and encounter spurious difficulties. What's more, if you
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
85 don't follow etc/MACHINES then you aren't helping to test that its
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
86 recommendations are valid.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
87
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
88 The etc/MACHINES file may describe other things that you need to do
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
89 to make Emacs work on your machine. If so, you should follow these
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
90 recommendations also, for the same reason.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
91
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
92 * Send your problem reports to emacs-pretest-bug@gnu.org, not
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
93 bug-gnu-emacs.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
94
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
95 Sometimes I won't know what to do about a system-dependent issue, and
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
96 I may need people to tell me what happens if you try a certain thing
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
97 on a certain system. When this happens, I'll send out a query.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
98
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
99 * Don't delay sending information.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
100
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
101 When you test on a system and encounter no problems, please tell me
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
102 about it right away. That way, I will know that someone has tested
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
103 Emacs on that kind of system.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
104
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
105 Please don't wait for several days "to see if it really works before
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
106 you say anything." Tell me right away that Emacs seems basically to
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
107 work; then, if you notice a problem a few days later, tell me
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
108 immediately about that when you see it.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
109
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
110 It is okay if you double check things before reporting a problem, such
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
111 as to see if you can easily fix it. But don't wait very long. A good
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
112 rule to use in pretesting is always to tell me about every problem on
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
113 the same day you encounter it, even if that means you can't find a
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
114 solution before you report the problem.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
115
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
116 I'd much rather hear about a problem today and a solution tomorrow
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
117 than get both of them tomorrow at the same time.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
118
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
119 * Make each bug report self-contained.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
120
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
121 If you refer back to another message, whether from you or from someone
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
122 else, then it will be necessary for anyone who wants to investigate
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
123 the bug to find the other message. This may be difficult, it is
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
124 probably time-consuming.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
125
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
126 To help me save time, simply copy the relevant parts of any previous
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
127 messages into your own bug report.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
128
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
129 In particular, if I ask you for more information because a bug report
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
130 was incomplete, it is best to send me the *entire* collection of
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
131 relevant information, all together. If you send just the additional
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
132 information, that makes me do extra work. There is even a risk that
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
133 I won't remember what question you are sending me the answer to.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
134
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
135 * When you encounter a bug that manifests itself as a Lisp error,
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
136 try setting debug-on-error to t and making the bug happen again.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
137 Then you will get a Lisp backtrace. Including that in your bug report
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
138 is very useful.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
139
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
140 * Debugging optimized code is possible, if you compile with GCC, but
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
141 in some cases the optimized code can be confusing. If you are not
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
142 accustomed to that, recompile Emacs without -O. One way to do this is
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
143
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
144 make clean
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
145 make CFLAGS=-g
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
146
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
147 * If you use X windows, it is a good idea to run Emacs under GDB (or
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
148 some other suitable debugger) *all the time*, at least while
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
149 pretesting.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
150
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
151 Then, when Emacs crashes, you will be able to debug the live process,
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
152 not just a core dump. The `pr' command defined in src/.gdbinit is very
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
153 useful in this case for examining Lisp_Object values as they would
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
154 appear in Lisp.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
155
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
156 If you can't use `pr' because Emacs has got a fault already, or
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
157 because you have only a core dump, you can use `xtype' to look at the
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
158 type of a value, and then choose one of the other commands `xsymbol',
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
159 `xstring', `xcons', `xvector' and so on to examine the contents.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
160
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
161 I myself *always* run Emacs under GDB so that I can debug conveniently
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
162 if the occasion arises.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
163
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
164 * To get Lisp-level backtrace information within GDB,
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
165 look for stack frames that call Ffuncall. Select them one by one in GDB
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
166 and type this:
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
167
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
168 p *args
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
169 pr
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
170
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
171 This will print the name of the Lisp function called by that level
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
172 of function calling.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
173
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
174 By printing the remaining elements of args, you can see the argument
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
175 values. Here's how to print the first argument:
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
176
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
177 p args[1]
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
178 pr
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
179
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
180 If you do not have a live process, you can use xtype and the other
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
181 x... commands such as xsymbol to get such information, albeit less
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
182 conveniently.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
183
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
184 * Even with a live process, these x... commands are useful for
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
185 examining the fields in a buffer, window, process, frame or marker.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
186 Here's an example using concepts explained in the node "Value History"
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
187 of the GDB manual to print the variable frame from this line in
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
188 xmenu.c:
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
189
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
190 buf.frame_or_window = Fcons (frame, prefix);
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
191
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
192 First, use these commands:
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
193
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
194 cd src
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
195 gdb emacs
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
196 b xmenu.c:1209
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
197 r -q
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
198
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
199 Then type C-x 5 2 to create a new frame, and it hits the breakpoint:
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
200
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
201 (gdb) p frame
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
202 $1 = 1077872640
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
203 (gdb) xtype
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
204 Lisp_Vectorlike
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
205 PVEC_FRAME
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
206 (gdb) xframe
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
207 $2 = (struct frame *) 0x3f0800
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
208 (gdb) p *$
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
209 $3 = {
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
210 size = 536871989,
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
211 next = 0x366240,
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
212 name = 809661752,
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
213 [...]
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
214 }
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
215 (gdb) p $3->name
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
216 $4 = 809661752
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
217
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
218 Now we can use `pr' to print the name of the frame:
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
219
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
220 (gdb) pr
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
221 "emacs@steenrod.math.nwu.edu"
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
222
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
223 * The Emacs C code heavily uses macros defined in lisp.h. So suppose
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
224 we want the address of the l-value expression near the bottom of
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
225 `kbd_buffer_store_event' from keyboard.c:
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
226
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
227 XVECTOR (kbd_buffer_frame_or_window)->contents[kbd_store_ptr
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
228 - kbd_buffer]
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
229 = event->frame_or_window);
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
230
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
231 XVECTOR is a macro, and therefore GDB does not know about it.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
232 GDB cannot evaluate p XVECTOR (kbd_buffer_frame_or_window).
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
233
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
234 However, you can use the xvector command in GDB to get the same
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
235 result. Here is how:
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
236
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
237 (gdb) p kbd_buffer_frame_or_window
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
238 $1 = 1078005760
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
239 (gdb) xvector
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
240 $2 = (struct Lisp_Vector *) 0x411000
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
241 0
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
242 (gdb) p $->contents[kbd_store_ptr - kbd_buffer]
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
243 $3 = 1077872640
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
244 (gdb) p &$
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
245 $4 = (int *) 0x411008
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
246
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
247 * Here's a related example of macros and the GDB `define' command.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
248 There are many Lisp vectors such as `recent_keys', which contains the
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
249 last 100 keystrokes. We can print this Lisp vector
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
250
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
251 p recent_keys
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
252 pr
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
253
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
254 But this may be inconvenient, since `recent_keys' is much more verbose
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
255 than `C-h l'. We might want to print only the last 10 elements of
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
256 this vector. `recent_keys' is updated in keyboard.c by the command
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
257
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
258 XVECTOR (recent_keys)->contents[recent_keys_index] = c;
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
259
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
260 So we define a GDB command `xvector-elts', so the last 10 keystrokes
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
261 are printed by
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
262
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
263 xvector-elts recent_keys recent_keys_index 10
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
264
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
265 where you can define xvector-elts as follows:
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
266
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
267 define xvector-elts
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
268 set $i = 0
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
269 p $arg0
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
270 xvector
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
271 set $foo = $
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
272 while $i < $arg2
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
273 p $foo->contents[$arg1-($i++)]
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
274 pr
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
275 end
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
276 document xvector-elts
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
277 Prints a range of elements of a Lisp vector.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
278 xvector-elts v n i
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
279 prints `i' elements of the vector `v' ending at the index `n'.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
280 end
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
281
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
282 * To debug what happens while preloading and dumping Emacs,
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
283 do `gdb temacs' and start it with `r -batch -l loadup dump'.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
284
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
285 If temacs actually succeeds when running under GDB in this way, do not
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
286 try to run the dumped Emacs, because it was dumped with the GDB
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
287 breakpoints in it.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
288
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
289 * If you encounter X protocol errors, try evaluating (x-synchronize t).
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
290 That puts Emacs into synchronous mode, where each Xlib call checks for
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
291 errors before it returns. This mode is much slower, but when you get
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
292 an error, you will see exactly which call really caused the error.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
293
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
294 * If the symptom of the bug is that Emacs fails to respond, don't
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
295 assume Emacs is `hung'--it may instead be in an infinite loop. To
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
296 find out which, make the problem happen under GDB and stop Emacs once
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
297 it is not responding. (If Emacs is using X Windows directly, you can
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
298 stop Emacs by typing C-z at the GDB job.) Then try stepping with
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
299 `step'. If Emacs is hung, the `step' command won't return. If it is
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
300 looping, `step' will return.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
301
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
302 If this shows Emacs is hung in a system call, stop it again and
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
303 examine the arguments of the call. In your bug report, state exactly
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
304 where in the source the system call is, and what the arguments are.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
305
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
306 If Emacs is in an infinite loop, please determine where the loop
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
307 starts and ends. The easiest way to do this is to use the GDB command
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
308 `finish'. Each time you use it, Emacs resumes execution until it
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
309 exits one stack frame. Keep typing `finish' until it doesn't
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
310 return--that means the infinite loop is in the stack frame which you
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
311 just tried to finish.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
312
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
313 Stop Emacs again, and use `finish' repeatedly again until you get back
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
314 to that frame. Then use `next' to step through that frame. By
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
315 stepping, you will see where the loop starts and ends. Also please
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
316 examine the data being used in the loop and try to determine why the
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
317 loop does not exit when it should. Include all of this information in
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
318 your bug report.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
319
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
320 * If certain operations in Emacs are slower than they used to be, here
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
321 is some advice for how to find out why.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
322
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
323 Stop Emacs repeatedly during the slow operation, and make a backtrace
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
324 each time. Compare the backtraces looking for a pattern--a specific
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
325 function that shows up more often than you'd expect.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
326
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
327 If you don't see a pattern in the C backtraces, get some Lisp
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
328 backtrace information by looking at Ffuncall frames (see above), and
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
329 again look for a pattern.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
330
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
331 When using X, you can stop Emacs at any time by typing C-z at GDB.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
332 When not using X, you can do this with C-g.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
333
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
334 * Configure tries to figure out what kind of system you have by
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
335 compiling and linking programs which calls various functions and looks
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
336 at whether that succeeds. The file config.log contains any messages
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
337 produced by compilers while running configure, to aid debugging if
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
338 configure makes a mistake. But note that config.cache reads:
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
339
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
340 # Giving --cache-file=/dev/null disables caching, for debugging configure.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
341
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
342 or more simply,
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
343
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
344 rm config.cache
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
345 ./configure
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
346
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
347 * Always be precise when talking about changes you have made. Show
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
348 things rather than describing them. Use exact filenames (relative to
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
349 the main directory of the distribution), not partial ones. For
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
350 example, say "I changed Makefile" rather than "I changed the
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
351 makefile". Instead of saying "I defined the MUMBLE macro", send a
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
352 diff.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
353
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
354 * Always use `diff -c' to make diffs. If you don't include context, it
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
355 may be hard for me to figure out where you propose to make the
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
356 changes. So I might have to ignore your patch.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
357
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
358 * When you write a fix, keep in mind that I can't install a change
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
359 that *might* break other systems without the risk that it will fail to
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
360 work and therefore require an additional cycle of pretesting.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
361
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
362 People often suggest fixing a problem by changing config.h or
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
363 src/ymakefile or even src/Makefile to do something special that a
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
364 particular system needs. Sometimes it is totally obvious that such
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
365 changes would break Emacs for almost all users. I can't possibly make
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
366 a change like that. All I can do is send it back to you and ask you
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
367 to find a fix that is safe to install.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
368
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
369 Sometimes people send fixes that *might* be an improvement in
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
370 general--but it is hard to be sure of this. I can install such
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
371 changes some of the time, but not during pretest, when I am trying to
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
372 get a new version to work reliably as quickly as possible.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
373
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
374 The safest changes for me to install are changes to the s- and m-
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
375 files. At least I know those can't affect most systems.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
376
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
377 Another safe kind of change is one that uses a conditional to make
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
378 sure it will apply only to a particular kind of system. Ordinarily,
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
379 that is a bad way to solve a problem, and I would want to find a
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
380 cleaner alternative. But the virtue of safety can make it superior at
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
381 pretest time.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
382
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
383 * Don't try changing Emacs *in any way* unless it fails to work unchanged.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
384
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
385 * Don't even suggest changes to add features or make something
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
386 cleaner. Every change I install could introduce a bug, so I won't
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
387 install a change during pretest unless I see it is *necessary*.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
388
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
389 * If you would like to suggest changes for purposes other than fixing
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
390 user-visible bugs, don't wait till pretest time. Instead, send them
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
391 after I have made a release that proves to be stable. Then I can give
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
392 your suggestions proper consideration. If you send them at pretest
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
393 time, I will have to defer them till later, and that might mean I
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
394 forget all about them.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
395
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
396 * In some cases, if you don't follow these guidelines, your
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
397 information might still be useful, but I might have to do more work to
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
398 make use of it. Unfortunately, I am so far behind in my work that I
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
399 just can't keep up unless you help me to do it efficiently.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
400
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
401 Some suggestions for debugging on MS Windows:
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
402
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
403 Marc Fleischeuers, Geoff Voelker and Andrew Innes
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
404
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
405 To debug emacs with Microsoft Visual C++, you either start emacs from
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
406 the debugger or attach the debugger to a running emacs process. To
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
407 start emacs from the debugger, you can use the file bin/debug.bat. The
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
408 Microsoft Developer studio will start and under Project, Settings,
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
409 Debug, General you can set the command-line arguments and emacs'
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
410 startup directory. Set breakpoints (Edit, Breakpoints) at Fsignal and
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
411 other functions that you want to examine. Run the program (Build,
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
412 Start debug). Emacs will start and the debugger will take control as
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
413 soon as a breakpoint is hit.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
414
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
415 You can also attach the debugger to an already running emacs process.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
416 To do this, start up the Microsoft Developer studio and select Build,
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
417 Start debug, Attach to process. Choose the emacs process from the
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
418 list. Send a break to the running process (Debug, Break) and you will
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
419 find that execution is halted somewhere in user32.dll. Open the stack
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
420 trace window and go up the stack to w32_msg_pump. Now you can set
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
421 breakpoints in emacs (Edit, Breakpoints). Continue the running emacs
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
422 process (Debug, Step out) and control will return to emacs, until a
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
423 breakpoint is hit.
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
424
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
425 To examine the contents of a lisp variable, you can use the function
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
426 'debug_print'. Right-click on a variable, select QuickWatch, and
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
427 place 'debug_print(' and ')' around the expression. Press
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
428 'Recalculate' and the output is sent to the 'Debug' pane in the Output
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
429 window. If emacs was started from the debugger, a console window was
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
430 opened at emacs' startup; this console window also shows the output of
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
431 'debug_print'. It is also possible to keep appropriately masked and
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
432 typecast lisp symbols in the Watch window, this is more convenient
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
433 when steeping though the code. For instance, on entering
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
434 apply_lambda, you can watch (struct Lisp_Symbol *) (0xfffffff &
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
435 args[0]).
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
436
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
437
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
438 Local Variables:
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
439 mode: text
a3601f81ab2a New file with information for Emacs pretesters.
Pavel Janík <Pavel@Janik.cz>
parents:
diff changeset
440 End: