MCPcopy Create free account
hub / github.com/beefytech/Beef / GetBreakStackFrameIdx

Method GetBreakStackFrameIdx

IDEHelper/WinDebugger.cpp:11432–11471  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

11430}
11431
11432int WinDebugger::GetBreakStackFrameIdx()
11433{
11434 AutoCrit autoCrit(mDebugManager->mCritSect);
11435
11436 if ((mActiveBreakpoint == NULL) || (mRunState != RunState_Breakpoint))
11437 return -1;
11438 if ((mBreakStackFrameIdx != -1) || (mActiveThread != mExplicitStopThread))
11439 return mBreakStackFrameIdx;
11440
11441 mBreakStackFrameIdx = 0;
11442 BF_ASSERT(mActiveBreakpoint != NULL);
11443 if (mCallStack.IsEmpty())
11444 UpdateCallStack();
11445 if (!mCallStack.IsEmpty())
11446 {
11447 UpdateCallStackMethod(0);
11448
11449 for (int stackIdx = 0; stackIdx < (int)mCallStack.size(); stackIdx++)
11450 {
11451 auto callStackEntry = mCallStack[stackIdx];
11452 if (callStackEntry->mSubProgram == NULL)
11453 break;
11454 if ((mActiveBreakpoint->mAddr < callStackEntry->mSubProgram->mBlock.mLowPC) ||
11455 (mActiveBreakpoint->mAddr >= callStackEntry->mSubProgram->mBlock.mHighPC))
11456 break;
11457
11458 DbgSubprogram* specificSubprogram = callStackEntry->mSubProgram;
11459 auto dwLineData = callStackEntry->mSubProgram->FindClosestLine(mActiveBreakpoint->mAddr, &specificSubprogram);
11460 if (dwLineData == NULL)
11461 break;
11462
11463 if (mActiveBreakpoint->mLineData == dwLineData)
11464 {
11465 mBreakStackFrameIdx = stackIdx;
11466 break;
11467 }
11468 }
11469 }
11470 return mBreakStackFrameIdx;
11471}
11472
11473static const char* SafeString(const char* str)
11474{

Callers 1

Calls 3

FindClosestLineMethod · 0.80
IsEmptyMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected