Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

102 lines
3.9 KiB

  1. README.txt
  2. Author: Murali R. Krishnan (MuraliK)
  3. Created: Aug 27, 1997
  4. Revisions:
  5. Date By Comments
  6. ----------------- -------- -------------------------------------------
  7. Summary :
  8. This file describes the files in the directory iis\svcs\infocomm\dbgext\
  9. and details related to IIS Debugger Extensions for NTSD.
  10. File Description
  11. README.txt This file.
  12. dbgatq.cxx ATQ (Async Thread Queue) module related debugging helper code
  13. dbgcc.cxx w3svc: CLIENT_CONN & HTTP_REQUEST related debugging helper code
  14. dbginet.cxx ISATQ objects general helper code -
  15. Allocation Cache, Scheduler ..
  16. dbgthunk.cxx Generic & Thunk code for the NTSD extension to function
  17. inside the Debugger process
  18. dbgwmif.cxx Debugger extension for WAM INFO objects in w3svc.dll
  19. dbgwreq.cxx Debugger extensions for WAM_REQUEST object in w3svc.dll
  20. dbgwxin.cxx Debugger extensions for WAM_EXEC_INFO object in wam.dll
  21. enummod.cxx Enumerate module information - enum func.
  22. mod.cxx Used to enumerate loaded modules in the process
  23. ref.cxx Debugger extension for use with IIS RefTraceLogs
  24. ver.cxx Version information for loaded modules
  25. inetdbg.def Def file for the dll
  26. inetdbg.rc Resources for the dll
  27. inetdbgp.h Precompiled header file for the DLL
  28. makefile NT Build related files
  29. makefile.inc
  30. sources
  31. Implementation Details
  32. Contents:
  33. 1) Debugger & Debuggee
  34. 2) Use of Thunks
  35. 3) private/public data members
  36. *) Acknowledgements
  37. 1) Debugger & Debuggee
  38. -----------------------
  39. NTSD is the system debugger for NT. We use it to do console mode debugging
  40. for NT processes. In this context the debugger process is the master process
  41. that runs the program in a separate process (debuggee). NTSD & CDB function
  42. as the debugger process here. The underlying process is called the debuggee
  43. process. The NTSD extension is loaded into the debugger process to help
  44. us debug the debuggee. From the extensions insided the debugger, we can
  45. only access the data blocks in the debugee process. This means that we cannot
  46. be calling member functions or other fancy operations inside the debuggee
  47. code.
  48. 2) Use of Thunks
  49. ----------------
  50. When a project involves C++ headers, invariably one finds inline member
  51. functions that show up in the header. Such functions have underlying code
  52. implemented in one of the dlls of the debuggee. But these are not accessible
  53. within the debugger process. To compile the debugger extensions the compiler
  54. looks to resolve such inlined functions. There are two ways to resolve this:
  55. a) link to the dlls of the debuggee process => redundantly code will be loaded
  56. in the debuggee process (sometimes this may lead to failure, especially if
  57. the debuggee dll does complicated initializations)
  58. b) use dumb thunks - code that does nothing as a substitute for the original
  59. functions. Given that we do not really care exercising the member functions,
  60. thunks serve as the best approach.
  61. In this current inetdbg.dll, the thunks are defined in dbgthunk.cxx.
  62. 3) Private/Public members
  63. -------------------------
  64. C++ permits good abstraction and encapsulation using private, public, and
  65. protected keywords to mask direct access to data members if needed. Inside
  66. the debugger process, we can only access data. So to print out members
  67. we may have to reach inside C++ structures and classes and pull out data
  68. members. To ease this it is good to # define the private & protected keywords
  69. to be 'public' itself. This does no harm, because we are not really doing any
  70. real work inside the debugger extensions that can affect state of the
  71. object.
  72. *) Acknowledgements
  73. -------------------
  74. I would like to thank Keith Moore (KeithMo) for techniques and technical
  75. consultation on this debugger extension dll. JohnL did a initial limited
  76. version of the debugger extension dealing with just ATQ contexts based on
  77. code from NT base.