From 47e6922eb8a2dbc57a06fac948f3f0d0e6334547 Mon Sep 17 00:00:00 2001 From: Sergei Vorobev Date: Tue, 9 Feb 2016 00:01:42 -0800 Subject: [PATCH] Convert SOSAndICorDebug.docx to SOSAndICorDebug.md --- src/ToolBox/SOS/SOSAndICorDebug.docx | Bin 19929 -> 0 bytes src/ToolBox/SOS/SOSAndICorDebug.md | 81 +++++++++++++++++++++++++++++++++++ 2 files changed, 81 insertions(+) delete mode 100644 src/ToolBox/SOS/SOSAndICorDebug.docx create mode 100644 src/ToolBox/SOS/SOSAndICorDebug.md diff --git a/src/ToolBox/SOS/SOSAndICorDebug.docx b/src/ToolBox/SOS/SOSAndICorDebug.docx deleted file mode 100644 index 36920833f676b9c755bd70c07d1df11008541c87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19929 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 diff --git a/src/ToolBox/SOS/SOSAndICorDebug.md b/src/ToolBox/SOS/SOSAndICorDebug.md new file mode 100644 index 0000000..725d018 --- /dev/null +++ b/src/ToolBox/SOS/SOSAndICorDebug.md @@ -0,0 +1,81 @@ +SOS & ICorDebug +-------------------- + +## Introduction + +The purpose of this doc is to capture the work and learnings produced by the Dev 11 MQ item to integrate the public ICorDebug* interfaces (mscordbi.dll) into the SOS implementation. +Note: Use of the name “windbg” in this document is meant to actually indicate all members of the ntsd family of debuggers. + + +## MSCORDBI.DLL Distribution + +### What’s checked in - suboptimal + +For MQ, SOS activates mscordbi.dll via the “typical” mechanism of calling into mscoree.dll to get the ICLRDebugging interface, on which SOS calls OpenVirtualProcess. +Although this works, it sucks. +It assumes the CLR you want to debug has been formally installed onto the debugging machine (complete with mscoree.dll in your system32 / syswow64 directory). + +### Recommendation +Optimally, everything windbg needs in order to debug the CLR should be automagically downloaded to the user’s box, including DAC, mscordbi.dll, and even SOS itself, with no need at all for mscoree.dll or mscoreei.dll. + +### Download +Today, DAC is already automagically downloaded via the symbol server, with support for that hard-coded into the debugger: Windbg takes file information of the CLR.dll in the debuggee or dump that would normally be used to ask the symbol server for CLR.pdb, and instead asks for the DAC dll (using CLR.dll’s file info and the DAC dll’s file name). +This same hack could be applied to download the appropriate mscordbi.dll, and even SOS.dll. + + +This requires work from the following parties: + + +* **CLR & Windows debugging teams** agree on a design whereby windbg could automatically (or receive a command to) locate and download the appropriate mscordbi.dll and SOS.dll much as it does today to locate DAC. +Extensions like SOS should then be able to access mscordbi.dll via a windbg API, much like the windbg API that exposes the private DAC interface. + * The above is intentionally way-vague. + Extra work needs to be done to determine a good way for windbg & extensions to cooperate and access mscordbi functionality. +* **Windows debugging team** implements the above +* **CLR Servicing Team** must alter their process to ensure mscordbi.dll and SOS.dll are properly indexed on the symbol server upon each CLR release, just as with DAC. + + +### Activation +Once DAC, SOS, and mscordbi are all on the same machine, we need a way for SOS to get an ICorDebugProcess from mscordbi that does not require mscoree.dll on the box. +Since the necessary mscordbi is already available as per above, there is no need for SOS to go through mscoree or mscoreei as it is today. +Since mscoreei.dll eventually just calls OpenVirtualProcessImpl() from mscordbi.dll, one could imagine that SOS could simply call mscordbi’s OpenVirtualProcessImpl() directly. + +* CLR Team would need to export OpenVirtualProcessImpl, or the equivalent, from mscordbi.dll directly. +* CLR Team would modify SOS to use OpenVirtualProcessImpl rather than the current scheme that relies on mscoree.dll. +* Since CLR Team owns both ends of this interface (i.e., implementation and consumer of OpenVirtualProcessImpl), and since we already have a scheme to exchange version numbers in OpenVirtualProcessImpl, there should not be versioning problems. +* However, we might prefer to have windbg (instead of SOS) call OpenVirtualProcessImpl(). +Examples why: + * The “Download” section above talks about SOS “accessing” mscordbi. + This is vague, and could either mean that SOS calls into mscordbi’ s OpenVirtualProcessImpl() directly to get an ICorDebugProcess OR SOS uses a new, structured windbg API which would call (on SOS’s behalf) into mscordbi to provide an ICorDebugProcess. + The latter may be a more natural way for an extension to get access to the “right” ICorDebugProcess, particularly if multiple mscordbi.dll’s end up on the symbol path, or for in-proc SxS scenarios. + * Perhaps windbg could someday use mscordbi directly to aid in managed debugging, rather than the private DAC interface. +* If we do choose to have windbg (instead of SOS) call OpenVirtualProcessImpl, then we’d need to give some more thought to OpenVirtualProcessImpl and versioning, since we no longer control the consumer end of that relationship. + +## !ClrStack –i [-p] + +This checkin uses !clrstack as the prototype for activating and consuming the public dbgapi. +This section briefly describes how that works. +If “-i” is specified, then !clrstack defers to ClrStackFromPublicInterface() to do its work. +Today in SOS, the private DAC interface is initialized at the beginning of each command, and released at the end of each command. +ClrStackFromPublicInterface() follows suit by initializing the public interface at the top, via ICLRDebugging, thus setting g_pCorDebugProcess appropriately (see “What’s checked in – suboptimal” above). +Note: currently, g_pCorDebugProcess is not released but hey, prototype code. +ClrStackFromPublicInterface then uses g_pCorDebugProcess to grab the other public interfaces necessary to do a stackwalk. +If “-p” is specified, ClrStackFromPublicInterface will also use ICorDebug* to get parameter info. +Caveats +To pretty-print the function names, there are several metadata-consuming chunks of code in SOS. +I picked the one that required the least amount of private DAC gunk. +However, that code appears not to be well-exercised. +See comments in the code for more details. +The code in !clrstack –i to print the stack is only mildly tested. +There may well be cases where the stack doesn’t look so great or where managed frames appear unordered with respect to the internal (explicit EE) Frames. +See comments in the code for more details. + +## Mac + +Nope. +There are several silly reasons why the above is #ifdef’d out on the Mac. +The work necessary to enable this on the Mac may well be straightforward. +Some of the reasons the Mac compile failed for me: + +* Need psapi.h for GetModuleInformation and structures it uses. The equivalents need to be found (or implemented!) for the Mac. +* No IID defined for IDebugAdvanced3. (Possibly just a matter of manually rebuilding the right GUID lib for the Mac, if you can find it.) +* Couldn’t find some CLR-specific headers on the Mac build, like metahost.h. -- 2.7.4