Mercurial > emacs
annotate nt/INSTALL @ 37336:7d9514f48b41
Fix dates in latest entries.
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Fri, 13 Apr 2001 11:20:54 +0000 |
parents | 9f0620f192bd |
children | 4068826e329f |
rev | line source |
---|---|
25856 | 1 Building and Installing Emacs |
35870
e3bd30e28be6
(Trouble-shooting): Add note about need to specify extra
Andrew Innes <andrewi@gnu.org>
parents:
35814
diff
changeset
|
2 on Windows NT/2000 and Windows 95/98/ME |
25856 | 3 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
4 To compile Emacs, you will need either Microsoft Visual C++ 2.0 or |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
5 later, or a Windows port of GCC 2.95 or later with Mingw and W32 API |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
6 support and a port of GNU make. You can use the Cygwin ports of GCC, |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
7 but Emacs requires the Mingw headers and libraries to build. |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
8 |
35726
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
9 If you build Emacs on Windows 9X or ME, not on Windows 2000 or |
35870
e3bd30e28be6
(Trouble-shooting): Add note about need to specify extra
Andrew Innes <andrewi@gnu.org>
parents:
35814
diff
changeset
|
10 Windows NT, we suggest to install the Cygwin port of Bash. |
35726
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
11 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
12 Please see http://www.mingw.org for pointers to GCC/Mingw binaries. |
25856 | 13 |
35726
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
14 For reference, here is a list of which builds of GNU make are known |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
15 to work or not, and whether they work in the presence and/or absence |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
16 of sh.exe, the Cygwin port of Bash. |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
17 |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
18 sh exists no sh |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
19 |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
20 cygwin b20.1 make (3.75): okay[1] fails[2] |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
21 MSVC compiled gmake 3.77: okay okay |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
22 MSVC compiled gmake 3.78.1: okay okay |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
23 MSVC compiled gmake 3.79.1: okay okay |
35814
70ef76f45876
Move note [4] to the no-sh column.
Eli Zaretskii <eliz@gnu.org>
parents:
35726
diff
changeset
|
24 mingw32/gcc-2.92.2 make (3.77): okay okay[4] |
35726
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
25 cygwin compiled gmake 3.77: okay[1] fails[2] |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
26 cygwin compiled gmake 3.78.1: okay fails[2] |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
27 cygwin compiled gmake 3.79.1: couldn't build make[3] |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
28 |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
29 Notes: |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
30 |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
31 [1] doesn't cope with makefiles with DOS line endings, so must mount |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
32 emacs source with text!=binary. |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
33 [2] fails when needs to invoke shell commands; okay invoking gcc etc. |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
34 [3] requires LC_MESSAGES support to build; maybe 2.95.x update to |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
35 cygwin provides this? |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
36 [4] may fail on Windows 9X and Windows ME; if so, install Bash. |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
37 |
35870
e3bd30e28be6
(Trouble-shooting): Add note about need to specify extra
Andrew Innes <andrewi@gnu.org>
parents:
35814
diff
changeset
|
38 * Configuring |
25856 | 39 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
40 Configuration of Emacs is now handled by running configure.bat in the |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
41 nt subdirectory. It will detect which compiler you have available, |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
42 and generate makefiles accordingly. You can override the compiler |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
43 detection, and control optimization and debug settings, by specifying |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
44 options on the command line when invoking configure. |
25856 | 45 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
46 To configure Emacs to build with GCC or MSVC, whichever is available, |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
47 simply change to the nt subdirectory and run `configure' with no |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
48 options. To see what options are available, run `configure --help'. |
25856 | 49 |
31625
345a3f5a7193
Add note about expected error messages when configure
Andrew Innes <andrewi@gnu.org>
parents:
31083
diff
changeset
|
50 N.B. It is normal to see a few error messages output while configure |
345a3f5a7193
Add note about expected error messages when configure
Andrew Innes <andrewi@gnu.org>
parents:
31083
diff
changeset
|
51 is running, when gcc support is being tested. These cannot be |
345a3f5a7193
Add note about expected error messages when configure
Andrew Innes <andrewi@gnu.org>
parents:
31083
diff
changeset
|
52 surpressed because of limitations in the Windows 9x command.com shell. |
345a3f5a7193
Add note about expected error messages when configure
Andrew Innes <andrewi@gnu.org>
parents:
31083
diff
changeset
|
53 |
35870
e3bd30e28be6
(Trouble-shooting): Add note about need to specify extra
Andrew Innes <andrewi@gnu.org>
parents:
35814
diff
changeset
|
54 * Building |
25856 | 55 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
56 After running configure, simply run the appropriate `make' program for |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
57 your compiler to build Emacs. For MSVC, this is nmake; for GCC, it is |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
58 GNU make. |
25856 | 59 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
60 As the files are compiled, you will see some warning messages |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
61 declaring that some functions don't return a value, or that some data |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
62 conversions will be lossy, etc. You can safely ignore these messages. |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
63 The warnings may be fixed in the main FSF source at some point, but |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
64 until then we will just live with them. |
25856 | 65 |
35870
e3bd30e28be6
(Trouble-shooting): Add note about need to specify extra
Andrew Innes <andrewi@gnu.org>
parents:
35814
diff
changeset
|
66 * Installing |
25856 | 67 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
68 To install Emacs after it has compiled, simply run `make install'. |
25856 | 69 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
70 By default, Emacs will be installed in the location where it was |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
71 built, but a different location can be specified either using the |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
72 --prefix option to configure, or by setting INSTALL_DIR when running |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
73 make, like so: |
25856 | 74 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
75 make install INSTALL_DIR=D:/emacs |
25856 | 76 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
77 The install process will run addpm to setup the registry entries, and |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
78 to create a Start menu icon for Emacs. |
25856 | 79 |
35870
e3bd30e28be6
(Trouble-shooting): Add note about need to specify extra
Andrew Innes <andrewi@gnu.org>
parents:
35814
diff
changeset
|
80 * Trouble-shooting |
25856 | 81 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
82 The main problems that are likely to be encountered when building |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
83 Emacs stem from using an old version of GCC, or old Mingw or W32 API |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
84 headers. Additionally, cygwin ports of GNU make may require the Emacs |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
85 source tree to be mounted with text!=binary, because the makefiles |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
86 generated by configure.bat necessarily use DOS line endings. Also, |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
87 cygwin ports of make must run in UNIX mode, either by specifying |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
88 --unix on the command line, or MAKE_MODE=UNIX in the environment. |
25856 | 89 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
90 When configure runs, it attempts to detect when GCC itself, or the |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
91 headers it is using, are not suitable for building Emacs. GCC version |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
92 2.95 or later is needed, because that is when the Windows port gained |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
93 sufficient support for anonymous structs and unions to cope with some |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
94 definitions from winnt.h that are used by addsection.c. The W32 API |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
95 headers that come with Cygwin b20.1 are incomplete, and do not include |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
96 some definitions required by addsection.c, for instance. Also, older |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
97 releases of the W32 API headers from Anders Norlander contain a typo |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
98 in the definition of IMAGE_FIRST_SECTION in winnt.h, which |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
99 addsection.c relies on. Versions of w32api-xxx.zip from at least |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
100 1999-11-18 onwards are okay. |
25856 | 101 |
35726
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
102 If configure succeeds, but make fails, install the Cygwin port of |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
103 Bash, even if the table above indicates that Emacs should be able to |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
104 build without sh.exe. (Some versions of Windows shells are too dumb |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
105 for Makefile's used by Emacs.) |
efa42820d1af
Copy the table of tested combinations of development
Eli Zaretskii <eliz@gnu.org>
parents:
31625
diff
changeset
|
106 |
35870
e3bd30e28be6
(Trouble-shooting): Add note about need to specify extra
Andrew Innes <andrewi@gnu.org>
parents:
35814
diff
changeset
|
107 If you are using a recent Cygwin build of GCC, such as Cygwin version |
e3bd30e28be6
(Trouble-shooting): Add note about need to specify extra
Andrew Innes <andrewi@gnu.org>
parents:
35814
diff
changeset
|
108 1.1.8, you may need to specify some extra compiler flags like so: |
e3bd30e28be6
(Trouble-shooting): Add note about need to specify extra
Andrew Innes <andrewi@gnu.org>
parents:
35814
diff
changeset
|
109 |
e3bd30e28be6
(Trouble-shooting): Add note about need to specify extra
Andrew Innes <andrewi@gnu.org>
parents:
35814
diff
changeset
|
110 configure --with-gcc --cflags -mwin32 --cflags -D__MSVCRT__ |
36576
9f0620f192bd
Add --ldflags to configure line for building with
Andrew Innes <andrewi@gnu.org>
parents:
35870
diff
changeset
|
111 --ldflags -mwin32 |
35870
e3bd30e28be6
(Trouble-shooting): Add note about need to specify extra
Andrew Innes <andrewi@gnu.org>
parents:
35814
diff
changeset
|
112 |
e3bd30e28be6
(Trouble-shooting): Add note about need to specify extra
Andrew Innes <andrewi@gnu.org>
parents:
35814
diff
changeset
|
113 We will attempt to auto-detect the need for these flags in a future |
e3bd30e28be6
(Trouble-shooting): Add note about need to specify extra
Andrew Innes <andrewi@gnu.org>
parents:
35814
diff
changeset
|
114 release. |
e3bd30e28be6
(Trouble-shooting): Add note about need to specify extra
Andrew Innes <andrewi@gnu.org>
parents:
35814
diff
changeset
|
115 |
e3bd30e28be6
(Trouble-shooting): Add note about need to specify extra
Andrew Innes <andrewi@gnu.org>
parents:
35814
diff
changeset
|
116 * Debugging |
25856 | 117 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
118 You should be able to debug Emacs using the debugger that is |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
119 appropriate for the compiler you used, namely DevStudio or Windbg if |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
120 compiled with MSVC, or gdb if compiled with gcc. |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
121 |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
122 Emacs functions implemented in C use a naming convention that reflects |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
123 their names in lisp. The names of the C routines are the lisp names |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
124 prefixed with 'F', and with dashes converted to underscores. For |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
125 example, the function call-process is implemented in C by |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
126 Fcall_process. Similarly, lisp variables are prefixed with 'V', again |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
127 with dashes converted to underscores. These conventions enable you to |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
128 easily set breakpoints or examine familiar lisp variables by name. |
25856 | 129 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
130 Since Emacs data is often in the form of a lisp object, and the |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
131 Lisp_Object type is difficult to examine manually in the MSVC |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
132 debugger, Emacs provides a helper routine called debug_print that |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
133 prints out a readable representation of a Lisp_Object. (If you are |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
134 using gdb, there is a .gdbinit file in the src directory which |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
135 provides definitions that are useful for examining lisp objects. The |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
136 following tips are mainly of interest when using MSVC.) The output |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
137 from debug_print is sent to stderr, and to the debugger via the |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
138 OutputDebugString routine. The output sent to stderr should be |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
139 displayed in the console window that was opened when the emacs.exe |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
140 executable was started. The output sent to the debugger should be |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
141 displayed in its "Debug" output window. |
25856 | 142 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
143 When you are in the process of debugging Emacs and you would like to |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
144 examine the contents of a Lisp_Object variable, popup the QuickWatch |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
145 window (QuickWatch has an eyeglass symbol on its button in the |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
146 toolbar). In the text field at the top of the window, enter |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
147 debug_print(<variable>) and hit return. For example, start and run |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
148 Emacs in the debugger until it is waiting for user input. Then click |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
149 on the Break button in the debugger to halt execution. Emacs should |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
150 halt in ZwUserGetMessage waiting for an input event. Use the Call |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
151 Stack window to select the procedure w32_msp_pump up the call stack |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
152 (see below for why you have to do this). Open the QuickWatch window |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
153 and enter debug_print(Vexec_path). Evaluating this expression will |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
154 then print out the contents of the lisp variable exec-path. |
25856 | 155 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
156 If QuickWatch reports that the symbol is unknown, then check the call |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
157 stack in the Call Stack window. If the selected frame in the call |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
158 stack is not an Emacs procedure, then the debugger won't recognize |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
159 Emacs symbols. Instead, select a frame that is inside an Emacs |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
160 procedure and try using debug_print again. |
25856 | 161 |
31083
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
162 If QuickWatch invokes debug_print but nothing happens, then check the |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
163 thread that is selected in the debugger. If the selected thread is |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
164 not the last thread to run (the "current" thread), then it cannot be |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
165 used to execute debug_print. Use the Debug menu to select the current |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
166 thread and try using debug_print again. Note that the debugger halts |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
167 execution (e.g., due to a breakpoint) in the context of the current |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
168 thread, so this should only be a problem if you've explicitly switched |
f64a9a44e2a3
Rewrite to match new configure process.
Andrew Innes <andrewi@gnu.org>
parents:
25856
diff
changeset
|
169 threads. |