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.