Merge pull request #3280 from jlp765/endb
lib/system/endb.nim bug fix: Switch state to dbgSkipCurrent for Eval, Local & Global
This commit is contained in:
commit
d61461157f
1 changed files with 20 additions and 2 deletions
|
|
@ -298,7 +298,7 @@ proc dbgEvaluate(stream: File, s: cstring, start: int, f: PFrame) =
|
||||||
for i in 0 .. f.len-1:
|
for i in 0 .. f.len-1:
|
||||||
let v = getLocal(f, i)
|
let v = getLocal(f, i)
|
||||||
if c_strcmp(v.name, dbgTemp.data) == 0:
|
if c_strcmp(v.name, dbgTemp.data) == 0:
|
||||||
writeVariable(stream, v)
|
writeVariable(stream, v)
|
||||||
|
|
||||||
proc dbgOut(s: cstring, start: int, currFrame: PFrame) =
|
proc dbgOut(s: cstring, start: int, currFrame: PFrame) =
|
||||||
var dbgTemp: StaticStr
|
var dbgTemp: StaticStr
|
||||||
|
|
@ -396,7 +396,13 @@ proc commandPrompt() =
|
||||||
again = false
|
again = false
|
||||||
quit(1) # BUGFIX: quit with error code > 0
|
quit(1) # BUGFIX: quit with error code > 0
|
||||||
elif ?"e" or ?"eval":
|
elif ?"e" or ?"eval":
|
||||||
|
var
|
||||||
|
prevState = dbgState
|
||||||
|
prevSkipFrame = dbgSkipToFrame
|
||||||
|
dbgState = dbSkipCurrent
|
||||||
dbgEvaluate(stdout, dbgUser.data, i, dbgFramePtr)
|
dbgEvaluate(stdout, dbgUser.data, i, dbgFramePtr)
|
||||||
|
dbgState = prevState
|
||||||
|
dbgSkipToFrame = prevSkipFrame
|
||||||
elif ?"o" or ?"out":
|
elif ?"o" or ?"out":
|
||||||
dbgOut(dbgUser.data, i, dbgFramePtr)
|
dbgOut(dbgUser.data, i, dbgFramePtr)
|
||||||
elif ?"stackframe":
|
elif ?"stackframe":
|
||||||
|
|
@ -404,9 +410,21 @@ proc commandPrompt() =
|
||||||
elif ?"w" or ?"where":
|
elif ?"w" or ?"where":
|
||||||
dbgShowExecutionPoint()
|
dbgShowExecutionPoint()
|
||||||
elif ?"l" or ?"locals":
|
elif ?"l" or ?"locals":
|
||||||
|
var
|
||||||
|
prevState = dbgState
|
||||||
|
prevSkipFrame = dbgSkipToFrame
|
||||||
|
dbgState = dbSkipCurrent
|
||||||
listLocals(stdout, dbgFramePtr)
|
listLocals(stdout, dbgFramePtr)
|
||||||
|
dbgState = prevState
|
||||||
|
dbgSkipToFrame = prevSkipFrame
|
||||||
elif ?"g" or ?"globals":
|
elif ?"g" or ?"globals":
|
||||||
|
var
|
||||||
|
prevState = dbgState
|
||||||
|
prevSkipFrame = dbgSkipToFrame
|
||||||
|
dbgState = dbSkipCurrent
|
||||||
listGlobals(stdout)
|
listGlobals(stdout)
|
||||||
|
dbgState = prevState
|
||||||
|
dbgSkipToFrame = prevSkipFrame
|
||||||
elif ?"u" or ?"up":
|
elif ?"u" or ?"up":
|
||||||
if dbgDown <= 0:
|
if dbgDown <= 0:
|
||||||
debugOut("[Warning] cannot go up any further ")
|
debugOut("[Warning] cannot go up any further ")
|
||||||
|
|
@ -484,7 +502,7 @@ proc dbgWriteStackTrace(f: PFrame) =
|
||||||
inc(i)
|
inc(i)
|
||||||
b = b.prev
|
b = b.prev
|
||||||
for j in countdown(i-1, 0):
|
for j in countdown(i-1, 0):
|
||||||
if tempFrames[j] == nil:
|
if tempFrames[j] == nil:
|
||||||
write(stdout, "(")
|
write(stdout, "(")
|
||||||
write(stdout, skipped)
|
write(stdout, skipped)
|
||||||
write(stdout, " calls omitted) ...")
|
write(stdout, " calls omitted) ...")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue