From dcbd88fcaf312600d47c833fbf327b8e335858d5 Mon Sep 17 00:00:00 2001 From: Sebastian Pfitzner Date: Fri, 29 Mar 2019 13:10:25 +0100 Subject: [PATCH 1/2] don't step over breakpoint on first statement with at-run --- src/Debugger.jl | 3 +-- src/repl.jl | 4 +++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Debugger.jl b/src/Debugger.jl index 4493372..e4f34bd 100644 --- a/src/Debugger.jl +++ b/src/Debugger.jl @@ -11,7 +11,7 @@ using REPL.LineEdit using REPL.REPLCompletions using CodeTracking -using JuliaInterpreter: JuliaInterpreter, Frame, @lookup, FrameCode, BreakpointRef, debug_command, leaf, root, BreakpointState, +using JuliaInterpreter: JuliaInterpreter, Frame, @lookup, FrameCode, BreakpointRef, debug_command, leaf, root, BreakpointState, finish_and_return!, Compiled using JuliaInterpreter: pc_expr, moduleof, linenumber, extract_args, @@ -88,7 +88,6 @@ function _make_frame(mod, arg) frame = JuliaInterpreter.enter_call_expr(Expr(:call,theargs...)) frame = JuliaInterpreter.maybe_step_through_kwprep!(frame) frame = JuliaInterpreter.maybe_step_through_wrapper!(frame) - JuliaInterpreter.maybe_next_call!(frame) frame end end diff --git a/src/repl.jl b/src/repl.jl index 62890f7..bcf8fe7 100644 --- a/src/repl.jl +++ b/src/repl.jl @@ -108,10 +108,12 @@ function RunDebugger(frame, repl = nothing, terminal = nothing; initial_continue state.standard_keymap = Dict{Any,Any}[skeymap, LineEdit.history_keymap, LineEdit.default_keymap, LineEdit.escape_defaults] panel.keymap_dict = LineEdit.keymap([repl_switch;state.standard_keymap]) - if initial_continue + if initial_continue && !JuliaInterpreter.shouldbreak(frame, frame.pc) execute_command(state, Val(:c), "c") state.frame === nothing && return state.overall_result end + JuliaInterpreter.maybe_next_call!(frame) + print_status(Base.pipe_writer(terminal), active_frame(state); force_lowered=state.lowered_status) REPL.run_interface(terminal, LineEdit.ModalInterface([panel,search_prompt])) From 23c0964962d55328cb7eff144a585aecfcfaef47 Mon Sep 17 00:00:00 2001 From: Sebastian Pfitzner Date: Fri, 29 Mar 2019 13:15:00 +0100 Subject: [PATCH 2/2] fix tests --- src/Debugger.jl | 3 +++ src/repl.jl | 2 -- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Debugger.jl b/src/Debugger.jl index e4f34bd..14ac61d 100644 --- a/src/Debugger.jl +++ b/src/Debugger.jl @@ -88,6 +88,9 @@ function _make_frame(mod, arg) frame = JuliaInterpreter.enter_call_expr(Expr(:call,theargs...)) frame = JuliaInterpreter.maybe_step_through_kwprep!(frame) frame = JuliaInterpreter.maybe_step_through_wrapper!(frame) + if !JuliaInterpreter.shouldbreak(frame, frame.pc) + JuliaInterpreter.maybe_next_call!(frame) + end frame end end diff --git a/src/repl.jl b/src/repl.jl index bcf8fe7..4f0935b 100644 --- a/src/repl.jl +++ b/src/repl.jl @@ -112,8 +112,6 @@ function RunDebugger(frame, repl = nothing, terminal = nothing; initial_continue execute_command(state, Val(:c), "c") state.frame === nothing && return state.overall_result end - JuliaInterpreter.maybe_next_call!(frame) - print_status(Base.pipe_writer(terminal), active_frame(state); force_lowered=state.lowered_status) REPL.run_interface(terminal, LineEdit.ModalInterface([panel,search_prompt]))