haskell-debugger-0.12.0.0: hdb/Development/Debug/Adapter/Stepping.hs
module Development.Debug.Adapter.Stepping where
import DAP
import GHC.Debugger.Interface.Messages hiding (Command, Response)
import Development.Debug.Adapter
import Development.Debug.Adapter.Interface
import Development.Debug.Adapter.Evaluation
commandContinue :: DebugAdaptor ()
commandContinue = do
resetObjectReferences
DidContinue er <- sendInterleaved DoContinue $
sendContinueResponse (ContinueResponse True)
handleEvalResult False er
commandNext :: DebugAdaptor ()
commandNext = do
resetObjectReferences
DidStep er <- sendInterleaved DoStepLocal sendNextResponse
handleEvalResult True er
commandStepIn :: DebugAdaptor ()
commandStepIn = do
resetObjectReferences
DidStep er <- sendInterleaved DoSingleStep sendStepInResponse
handleEvalResult True er
commandStepOut :: DebugAdaptor ()
commandStepOut = do
resetObjectReferences
DidStep er <- sendInterleaved DoStepOut sendStepOutResponse
handleEvalResult True er
--------------------------------------------------------------------------------
-- | See "Lifetime of Objects References" in DAP specification.
resetObjectReferences :: DebugAdaptor ()
resetObjectReferences = do
updateDebugSession $ \s ->
s { stackFrameMap = mempty
, breakpointMap = mempty
, variablesMap = mempty
}