| 4197 | } |
| 4198 | |
| 4199 | void WinDebugger::StepLineTryPause(addr_target address, bool requireExactMatch) |
| 4200 | { |
| 4201 | if (mStepInAssembly) |
| 4202 | return; |
| 4203 | |
| 4204 | if (mStepLineData.mLineData != NULL) |
| 4205 | { |
| 4206 | DbgSubprogram* dbgSubprogram = NULL; |
| 4207 | DbgSrcFile* dbgSrcFile = NULL; |
| 4208 | auto dwLineData = FindLineDataAtAddress(address, &dbgSubprogram, &dbgSrcFile); |
| 4209 | if ((dwLineData != NULL) && (dwLineData->IsStackFrameSetup()) && ((!requireExactMatch) || (dbgSubprogram->GetLineAddr(*dwLineData) == address))) |
| 4210 | { |
| 4211 | // "Invalid" line |
| 4212 | if (dwLineData->mColumn == -1) |
| 4213 | { |
| 4214 | SetupStep(mStepType); |
| 4215 | mRunState = RunState_Running; |
| 4216 | return; |
| 4217 | } |
| 4218 | |
| 4219 | // If we're on the same line but a different column or a <= address then keep it keep looking |
| 4220 | if ((dbgSrcFile == mStepLineData.GetSrcFile()) && |
| 4221 | ((!requireExactMatch) || (dwLineData != mStepLineData.mLineData) || (address <= mStepStartPC)) && |
| 4222 | (dwLineData->mLine == mStepLineData.mLineData->mLine)) |
| 4223 | { |
| 4224 | SetupStep(mStepType); |
| 4225 | mRunState = RunState_Running; |
| 4226 | return; |
| 4227 | } |
| 4228 | } |
| 4229 | } |
| 4230 | |
| 4231 | mRunState = RunState_Paused; |
| 4232 | } |
| 4233 | |
| 4234 | void WinDebugger::BreakAll() |
| 4235 | { |
nothing calls this directly
no test coverage detected