103 lines
3.9 KiB
Plaintext
103 lines
3.9 KiB
Plaintext
README.txt
|
|
|
|
Author: Murali R. Krishnan (MuraliK)
|
|
Created: Aug 27, 1997
|
|
|
|
Revisions:
|
|
Date By Comments
|
|
----------------- -------- -------------------------------------------
|
|
|
|
|
|
Summary :
|
|
This file describes the files in the directory iis\svcs\infocomm\dbgext\
|
|
and details related to IIS Debugger Extensions for NTSD.
|
|
|
|
|
|
File Description
|
|
|
|
README.txt This file.
|
|
|
|
dbgatq.cxx ATQ (Async Thread Queue) module related debugging helper code
|
|
dbgcc.cxx w3svc: CLIENT_CONN & HTTP_REQUEST related debugging helper code
|
|
dbginet.cxx ISATQ objects general helper code -
|
|
Allocation Cache, Scheduler ..
|
|
dbgthunk.cxx Generic & Thunk code for the NTSD extension to function
|
|
inside the Debugger process
|
|
|
|
dbgwmif.cxx Debugger extension for WAM INFO objects in w3svc.dll
|
|
dbgwreq.cxx Debugger extensions for WAM_REQUEST object in w3svc.dll
|
|
dbgwxin.cxx Debugger extensions for WAM_EXEC_INFO object in wam.dll
|
|
|
|
enummod.cxx Enumerate module information - enum func.
|
|
mod.cxx Used to enumerate loaded modules in the process
|
|
ref.cxx Debugger extension for use with IIS RefTraceLogs
|
|
ver.cxx Version information for loaded modules
|
|
|
|
inetdbg.def Def file for the dll
|
|
inetdbg.rc Resources for the dll
|
|
inetdbgp.h Precompiled header file for the DLL
|
|
|
|
makefile NT Build related files
|
|
makefile.inc
|
|
sources
|
|
|
|
|
|
|
|
Implementation Details
|
|
|
|
Contents:
|
|
1) Debugger & Debuggee
|
|
2) Use of Thunks
|
|
3) private/public data members
|
|
*) Acknowledgements
|
|
|
|
|
|
1) Debugger & Debuggee
|
|
-----------------------
|
|
NTSD is the system debugger for NT. We use it to do console mode debugging
|
|
for NT processes. In this context the debugger process is the master process
|
|
that runs the program in a separate process (debuggee). NTSD & CDB function
|
|
as the debugger process here. The underlying process is called the debuggee
|
|
process. The NTSD extension is loaded into the debugger process to help
|
|
us debug the debuggee. From the extensions insided the debugger, we can
|
|
only access the data blocks in the debugee process. This means that we cannot
|
|
be calling member functions or other fancy operations inside the debuggee
|
|
code.
|
|
|
|
2) Use of Thunks
|
|
----------------
|
|
When a project involves C++ headers, invariably one finds inline member
|
|
functions that show up in the header. Such functions have underlying code
|
|
implemented in one of the dlls of the debuggee. But these are not accessible
|
|
within the debugger process. To compile the debugger extensions the compiler
|
|
looks to resolve such inlined functions. There are two ways to resolve this:
|
|
a) link to the dlls of the debuggee process => redundantly code will be loaded
|
|
in the debuggee process (sometimes this may lead to failure, especially if
|
|
the debuggee dll does complicated initializations)
|
|
b) use dumb thunks - code that does nothing as a substitute for the original
|
|
functions. Given that we do not really care exercising the member functions,
|
|
thunks serve as the best approach.
|
|
|
|
In this current inetdbg.dll, the thunks are defined in dbgthunk.cxx.
|
|
|
|
3) Private/Public members
|
|
-------------------------
|
|
C++ permits good abstraction and encapsulation using private, public, and
|
|
protected keywords to mask direct access to data members if needed. Inside
|
|
the debugger process, we can only access data. So to print out members
|
|
we may have to reach inside C++ structures and classes and pull out data
|
|
members. To ease this it is good to # define the private & protected keywords
|
|
to be 'public' itself. This does no harm, because we are not really doing any
|
|
real work inside the debugger extensions that can affect state of the
|
|
object.
|
|
|
|
|
|
*) Acknowledgements
|
|
-------------------
|
|
I would like to thank Keith Moore (KeithMo) for techniques and technical
|
|
consultation on this debugger extension dll. JohnL did a initial limited
|
|
version of the debugger extension dealing with just ATQ contexts based on
|
|
code from NT base.
|
|
|
|
|