summaryrefslogtreecommitdiff
path: root/src/debug/ee/controller.h
diff options
context:
space:
mode:
authorSteve MacLean <Steve.MacLean@microsoft.com>2019-10-22 16:58:15 -0400
committerHyungju Lee <leee.lee@samsung.com>2020-10-30 18:27:38 +0900
commitbe1aa1bf368dd47765d429ee0e557d8cb26f9bfd (patch)
tree6121d87a7d7a547b18e4bb1f8f2021af23d223aa /src/debug/ee/controller.h
parent4c3b471c380dcc01579c18ae5756480d27cd1ea1 (diff)
downloadcoreclr-6c84e69891c22fd25af042cf74bb195a2053de06.tar.gz
coreclr-6c84e69891c22fd25af042cf74bb195a2053de06.tar.bz2
coreclr-6c84e69891c22fd25af042cf74bb195a2053de06.zip
* Make ControllerStackInfo::m_returnFrame private * Make ControllerStackInfo always capture a return frame In case the active frame has no managed caller, capture the unmanaged frame * Fix step over stackalloc Generalize handling of stack allocations and stepping * Fix GetFunctionFromToken() argument checking Check token type is a method before creating a CordbFunction. Add extra assert to check for invalid tokens
Diffstat (limited to 'src/debug/ee/controller.h')
-rw-r--r--src/debug/ee/controller.h13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/debug/ee/controller.h b/src/debug/ee/controller.h
index 7172662f48..0d4776dd45 100644
--- a/src/debug/ee/controller.h
+++ b/src/debug/ee/controller.h
@@ -140,15 +140,15 @@ private:
* FrameInfo m_activeFrame: A FrameInfo
* describing the target frame. This should always be valid after a
* call to GetStackInfo.
+ *
+ * private:
+ * bool m_activeFound: Set to true if we found the target frame.
+ * bool m_returnFound: Set to true if we found the target's return frame.
*
* FrameInfo m_returnFrame: A FrameInfo
* describing the frame above the target frame, if target's
* return frame were found (call HasReturnFrame() to see if this is
* valid). Otherwise, this will be the same as m_activeFrame, above
- *
- * private:
- * bool m_activeFound: Set to true if we found the target frame.
- * bool m_returnFound: Set to true if we found the target's return frame.
*/
class ControllerStackInfo
{
@@ -165,7 +165,6 @@ public:
bool m_targetFrameFound;
FrameInfo m_activeFrame;
- FrameInfo m_returnFrame;
CorDebugChainReason m_specialChainReason;
@@ -199,8 +198,9 @@ public:
//bool ControllerStackInfo::HasReturnFrame() Returns
// true if m_returnFrame is valid. Returns false
// if m_returnFrame is set to m_activeFrame
- bool HasReturnFrame() {LIMITED_METHOD_CONTRACT; return m_returnFound; }
+ bool HasReturnFrame(bool allowUnmanaged = false) {LIMITED_METHOD_CONTRACT; return m_returnFound && (allowUnmanaged || m_returnFrame.managed); }
+ FrameInfo& GetReturnFrame(bool allowUnmanaged = false) {LIMITED_METHOD_CONTRACT; return HasReturnFrame(allowUnmanaged) ? m_returnFrame : m_activeFrame; }
// This function "undoes" an unwind, i.e. it takes the active frame (the current frame)
// and sets it to be the return frame (the caller frame). Currently it is only used by
// the stepper to step out of an LCG method. See DebuggerStepper::DetectHandleLCGMethods()
@@ -213,6 +213,7 @@ private:
bool m_activeFound;
bool m_returnFound;
+ FrameInfo m_returnFrame;
// A ridiculous flag that is targetting a very narrow fix at issue 650903
// (4.5.1/Blue). This is set for the duration of a stackwalk designed to