| 534 | } |
| 535 | |
| 536 | static void StepThread(int threadNumber, StepType stepType, int stepCount) |
| 537 | { |
| 538 | // Continue the thread, but set its step first |
| 539 | gStepThread = threadNumber; |
| 540 | gStepType = stepType; |
| 541 | gStepCount = stepCount; |
| 542 | |
| 543 | gMutex.lock(); |
| 544 | |
| 545 | std::list<DebuggerContext *>::iterator iter = gList.begin(); |
| 546 | while (iter != gList.end()) { |
| 547 | DebuggerContext *stack = *iter++; |
| 548 | if (stack->mThreadNumber == threadNumber) { |
| 549 | gStepLevel = stack->mStackContext->mDebugger->mStepLevel; |
| 550 | stack->Continue(1); |
| 551 | break; |
| 552 | } |
| 553 | } |
| 554 | gMutex.unlock(); |
| 555 | |
| 556 | } |
| 557 | |
| 558 | // Note that HandleBreakpoints is called immediately after a read memory |
| 559 | // barrier by the HX_STACK_LINE macro |