Mercurial > hg > truffle
comparison agent/src/os/win32/README.txt @ 0:a61af66fc99e jdk7-b24
Initial load
author | duke |
---|---|
date | Sat, 01 Dec 2007 00:00:00 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:a61af66fc99e |
---|---|
1 This is a "Simple Windows Debug Server" written for the purpose of | |
2 enabling the Serviceability Agent on Win32. It has backends both for | |
3 Windows NT 4.0 (using internal Windows APIs for a few routines) as | |
4 well as for 95/98/ME/2000 via the Tool Help APIs. | |
5 | |
6 The reason this debug server is necessary is that the Win32 debug APIs | |
7 by design tear down the target process when the debugger exits (see | |
8 knowledge base article Q164205 on msdn.microsoft.com). On Solaris, one | |
9 can attach to and detach from a process with no effect; this is key to | |
10 allowing dbx and gcore to work. | |
11 | |
12 The Simple Windows Debug Server effectively implements attach/detach | |
13 functionality for arbitrary debug clients. This allows the SA to | |
14 attach non-destructively to a process, and will enable gcore for Win32 | |
15 to be written shortly. While the debugger (the "client" in all of the | |
16 source code) is attached, the target process is suspended. (Note that | |
17 the debug server could be extended to support resumption of the target | |
18 process and transmission of debug events over to the debugger, but | |
19 this has been left for the future.) | |
20 | |
21 The makefile (type "nmake") builds two executables: SwDbgSrv.exe, | |
22 which is the server process, and SwDbgSub.exe, which is forked by the | |
23 server and should not be directly invoked by the user. | |
24 | |
25 The intent is that these two executables can be installed into | |
26 C:\WINNT\SYSTEM32 and SwDbgSrv installed to run as a service (on NT), | |
27 for example using ServiceInstaller (http://www.kcmultimedia.com/smaster/). | |
28 However, SwDbgSrv can also be run from the command line. It generates | |
29 no text output unless the source code is changed to enable debugging | |
30 printouts. As long as any processes which have been attached to by the | |
31 SA are alive, the SwDbgSrv and any forked SwDbgSub processes must be | |
32 left running. Terminating them will cause termination of the target | |
33 processes. | |
34 | |
35 The debug server opens port 27000 and accepts incoming connections | |
36 from localhost only. The security model assumes that if one can run a | |
37 process on the given machine then one basically has access to most or | |
38 all of the machine's facilities; this seems to be in line with the | |
39 standard Windows security model. The protocol used is text-based, so | |
40 one can debug the debug server using telnet. See README-commands.txt | |
41 for documentation on the supported commands. | |
42 | |
43 Testing indicates that the performance impact of attaching to a | |
44 process (and therefore permanently attaching a debugger) is minimal. | |
45 Some serious performance problems had been seen which ultimately | |
46 appeared to be a lack of physical memory on the machine running the | |
47 system. | |
48 | |
49 Bugs: | |
50 | |
51 This debug server is fundamentally incompatible with the Visual C++ | |
52 debugger. Once the debug server is used to attach to a process, the | |
53 Visual C++ IDE will not be able to attach to the same process (even if | |
54 the debug server is "detached" from that process). Note that this | |
55 system is designed to work with the same primitives that C and C++ | |
56 debuggers use (like "symbol lookup" and "read from process memory") | |
57 and exposes these primitives to Java, so in the long term we could | |
58 solve this problem by implementing platform-specific debug symbol | |
59 parsing and a platform-independent C++ debugger in Java. | |
60 | |
61 Note: | |
62 | |
63 The files IOBuf.cpp and IOBuf.hpp are also used in | |
64 building src/os/solaris/agent. |