Mercurial > hg > truffle
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/agent/src/os/win32/README.txt Sat Dec 01 00:00:00 2007 +0000 @@ -0,0 +1,64 @@ +This is a "Simple Windows Debug Server" written for the purpose of +enabling the Serviceability Agent on Win32. It has backends both for +Windows NT 4.0 (using internal Windows APIs for a few routines) as +well as for 95/98/ME/2000 via the Tool Help APIs. + +The reason this debug server is necessary is that the Win32 debug APIs +by design tear down the target process when the debugger exits (see +knowledge base article Q164205 on msdn.microsoft.com). On Solaris, one +can attach to and detach from a process with no effect; this is key to +allowing dbx and gcore to work. + +The Simple Windows Debug Server effectively implements attach/detach +functionality for arbitrary debug clients. This allows the SA to +attach non-destructively to a process, and will enable gcore for Win32 +to be written shortly. While the debugger (the "client" in all of the +source code) is attached, the target process is suspended. (Note that +the debug server could be extended to support resumption of the target +process and transmission of debug events over to the debugger, but +this has been left for the future.) + +The makefile (type "nmake") builds two executables: SwDbgSrv.exe, +which is the server process, and SwDbgSub.exe, which is forked by the +server and should not be directly invoked by the user. + +The intent is that these two executables can be installed into +C:\WINNT\SYSTEM32 and SwDbgSrv installed to run as a service (on NT), +for example using ServiceInstaller (http://www.kcmultimedia.com/smaster/). +However, SwDbgSrv can also be run from the command line. It generates +no text output unless the source code is changed to enable debugging +printouts. As long as any processes which have been attached to by the +SA are alive, the SwDbgSrv and any forked SwDbgSub processes must be +left running. Terminating them will cause termination of the target +processes. + +The debug server opens port 27000 and accepts incoming connections +from localhost only. The security model assumes that if one can run a +process on the given machine then one basically has access to most or +all of the machine's facilities; this seems to be in line with the +standard Windows security model. The protocol used is text-based, so +one can debug the debug server using telnet. See README-commands.txt +for documentation on the supported commands. + +Testing indicates that the performance impact of attaching to a +process (and therefore permanently attaching a debugger) is minimal. +Some serious performance problems had been seen which ultimately +appeared to be a lack of physical memory on the machine running the +system. + +Bugs: + +This debug server is fundamentally incompatible with the Visual C++ +debugger. Once the debug server is used to attach to a process, the +Visual C++ IDE will not be able to attach to the same process (even if +the debug server is "detached" from that process). Note that this +system is designed to work with the same primitives that C and C++ +debuggers use (like "symbol lookup" and "read from process memory") +and exposes these primitives to Java, so in the long term we could +solve this problem by implementing platform-specific debug symbol +parsing and a platform-independent C++ debugger in Java. + +Note: + +The files IOBuf.cpp and IOBuf.hpp are also used in +building src/os/solaris/agent.