From a3cc519ea9584ba0a26d0387a3e98e8a396a8424 Mon Sep 17 00:00:00 2001 From: JamesP Date: Thu, 3 Sep 2015 09:21:25 +1000 Subject: [PATCH] bug fix: Switch state to dbgSkipCurrent for Eval, Local & Global commands. This avoids stepping into the endb code if previous command was single step. Other two changes are trailing spaces removed. --- lib/system/endb.nim | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/lib/system/endb.nim b/lib/system/endb.nim index cba11ac5eb..b2cc5624bb 100644 --- a/lib/system/endb.nim +++ b/lib/system/endb.nim @@ -298,7 +298,7 @@ proc dbgEvaluate(stream: File, s: cstring, start: int, f: PFrame) = for i in 0 .. f.len-1: let v = getLocal(f, i) if c_strcmp(v.name, dbgTemp.data) == 0: - writeVariable(stream, v) + writeVariable(stream, v) proc dbgOut(s: cstring, start: int, currFrame: PFrame) = var dbgTemp: StaticStr @@ -396,7 +396,13 @@ proc commandPrompt() = again = false quit(1) # BUGFIX: quit with error code > 0 elif ?"e" or ?"eval": + var + prevState = dbgState + prevSkipFrame = dbgSkipToFrame + dbgState = dbSkipCurrent dbgEvaluate(stdout, dbgUser.data, i, dbgFramePtr) + dbgState = prevState + dbgSkipToFrame = prevSkipFrame elif ?"o" or ?"out": dbgOut(dbgUser.data, i, dbgFramePtr) elif ?"stackframe": @@ -404,9 +410,21 @@ proc commandPrompt() = elif ?"w" or ?"where": dbgShowExecutionPoint() elif ?"l" or ?"locals": + var + prevState = dbgState + prevSkipFrame = dbgSkipToFrame + dbgState = dbSkipCurrent listLocals(stdout, dbgFramePtr) + dbgState = prevState + dbgSkipToFrame = prevSkipFrame elif ?"g" or ?"globals": + var + prevState = dbgState + prevSkipFrame = dbgSkipToFrame + dbgState = dbSkipCurrent listGlobals(stdout) + dbgState = prevState + dbgSkipToFrame = prevSkipFrame elif ?"u" or ?"up": if dbgDown <= 0: debugOut("[Warning] cannot go up any further ") @@ -484,7 +502,7 @@ proc dbgWriteStackTrace(f: PFrame) = inc(i) b = b.prev for j in countdown(i-1, 0): - if tempFrames[j] == nil: + if tempFrames[j] == nil: write(stdout, "(") write(stdout, skipped) write(stdout, " calls omitted) ...")