Skip to content

Commit 5f56673

Browse files
committed
Ensure "s" returns a breakpoint from errors with break_on_error
1 parent 3191635 commit 5f56673

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

src/commands.jl

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,13 @@ function debug_command(@nospecialize(recurse), frame::Frame, cmd::AbstractString
334334
if isexpr(stmt, :(=))
335335
stmt = stmt.args[2]
336336
end
337-
ret = evaluate_call!(dummy_breakpoint, frame, stmt; enter_generated=enter_generated)
337+
local ret
338+
try
339+
ret = evaluate_call!(dummy_breakpoint, frame, stmt; enter_generated=enter_generated)
340+
catch err
341+
ret = handle_err(recurse, frame, err)
342+
return isa(ret, BreakpointRef) ? (leaf(frame), ret) : ret
343+
end
338344
isa(ret, BreakpointRef) && return maybe_reset_frame!(recurse, frame, ret, rootistoplevel)
339345
maybe_assign!(frame, stmt0, ret)
340346
frame.pc += 1

test/debug.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,11 @@ struct B{T} end
223223
fr = JuliaInterpreter.enter_call(f_outer)
224224
fr, pc = debug_command(JuliaInterpreter.finish_and_return!, fr, "finish")
225225
@test fr.framecode.scope.name == :error
226+
227+
fundef() = undef_func()
228+
frame = JuliaInterpreter.enter_call(fundef)
229+
fr, pc = debug_command(frame, "s")
230+
@test isa(pc, BreakpointRef)
226231
finally
227232
JuliaInterpreter.break_on_error[] = false
228233
end

0 commit comments

Comments
 (0)