annotate admin/emacs-pretesters @ 51242:661e2fe7e775

(autoconf-mode setups): Recognise AH_ and AU_ entries in "(autoconf)Autoconf Macro Index". Add "(autoconf)M4 Macro Index" and "(autoconf)Autotest Macro Index". Remove duplicate copy of "(automake)Macro and Variable Index". Keep automake after all autoconf possibilities, so as to prefer those.
author Juanma Barranquero <lekktu@gmail.com>
date Sun, 25 May 2003 21:03:57 +0000
parents 23a1cea22d13
children 695cf19ef79e d7ddb3e565de
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:
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44873
diff changeset
176
44873
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
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44873
diff changeset
197 r -q
44873
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 = {
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44873
diff changeset
210 size = 536871989,
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44873
diff changeset
211 next = 0x366240,
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44873
diff changeset
212 name = 809661752,
44873
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
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44873
diff changeset
261 are printed by
44873
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
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44873
diff changeset
273 p $foo->contents[$arg1-($i++)]
44873
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
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 44873
diff changeset
342 or more simply,
44873
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: