Fix SOS managed breakpoints when coreclr symbols are stripped.
authorMike McLaughlin <mikem@microsoft.com>
Tue, 9 Feb 2016 01:47:31 +0000 (17:47 -0800)
committerMike McLaughlin <mikem@microsoft.com>
Wed, 10 Feb 2016 21:38:08 +0000 (13:38 -0800)
commit7d74570d33823d4734fa287bc21a81ff12f7b40a
treea5c30abede3ac0679554444651fa1026288ae594
parentceb0a800ad650a36a32e543146669e9f3654e948
Fix SOS managed breakpoints when coreclr symbols are stripped.

Added a SOS DAC interface (ISOSDacInterface4::GetClrNotification) to get the exception
notification arguments instead of using the GetLastExceptionInformation function from the lldb
sosplugin that depends on coreclr symbols being present.

On the coreclr side, the clr notification arguments are saved in a global variable that is DAC
accessible. A critical section was added to protect this global variable while the special
exception is raised.

Setting the internal COMPlus_DebugBreakOnAssert environment variable causes 3 or 4 breaks in
the debugger with no reason.  It was breaking in the function that was determining whether it
should break.  I was using COMPlus_BreakOnEELoad=2 to break after coreclr was loaded and initialized
to set managed breakpoints and on a debug build it generates an assert (on release just a DebugBreak).
15 files changed:
src/ToolBox/SOS/Strike/strike.cpp
src/debug/daccess/daccess.cpp
src/debug/daccess/dacimpl.h
src/debug/daccess/request.cpp
src/inc/CMakeLists.txt
src/inc/CrstTypes.def
src/inc/crsttypes.h
src/inc/dacvars.h
src/inc/sospriv.idl
src/pal/prebuilt/idl/sospriv_i.c [new file with mode: 0644]
src/pal/prebuilt/inc/sospriv.h
src/utilcode/debug.cpp
src/vm/ceemain.cpp
src/vm/util.cpp
src/vm/util.hpp