HRESULT GetScopes(ICorDebugProcess *pProcess, uint64_t frameId, std::vector<Scope> &scopes);
HRESULT Evaluate(ICorDebugProcess *pProcess, uint64_t frameId, const std::string &expression, Variable &variable);
+
+ void Clear() { m_variables.clear(); m_nextVariableReference = 1; }
};
class Debugger
virtual void EmitStoppedEvent(StoppedEvent event) = 0;
virtual void EmitExitedEvent(ExitedEvent event) = 0;
virtual void EmitTerminatedEvent() = 0;
+ virtual void EmitContinuedEvent() = 0;
virtual void EmitThreadEvent(ThreadEvent event) = 0;
virtual void EmitModuleEvent(ModuleEvent event) = 0;
virtual void EmitOutputEvent(OutputEvent event) = 0;
void EmitStoppedEvent(StoppedEvent event) override;
void EmitExitedEvent(ExitedEvent event) override;
void EmitTerminatedEvent() override {};
+ void EmitContinuedEvent() override;
void EmitThreadEvent(ThreadEvent event) override;
void EmitModuleEvent(ModuleEvent event) override;
void EmitOutputEvent(OutputEvent event) override;
IfFailRet(m_pProcess->GetThread(threadId, &pThread));
DisableAllSteppers(m_pProcess);
IfFailRet(SetupStep(pThread, stepType));
- IfFailRet(m_pProcess->Continue(0));
- return S_OK;
+
+ m_variables.Clear();
+ Status = m_pProcess->Continue(0);
+ if (SUCCEEDED(Status))
+ m_protocol->EmitContinuedEvent();
+ return Status;
}
HRESULT ManagedDebugger::Continue()
{
if (!m_pProcess)
return E_FAIL;
- return m_pProcess->Continue(0);
+
+ m_variables.Clear();
+ HRESULT Status = m_pProcess->Continue(0);
+ if (SUCCEEDED(Status))
+ m_protocol->EmitContinuedEvent();
+ return Status;
}
HRESULT ManagedDebugger::Pause()
MIProtocol::Printf("*stopped,reason=\"exited\",exit-code=\"%i\"\n", event.exitCode);
}
+void MIProtocol::EmitContinuedEvent()
+{
+}
+
void MIProtocol::EmitThreadEvent(ThreadEvent event)
{
const char *reasonText = "";