How to quit/exit from file included in the terminal

You have a latent need for a debugging workflow in Julia. If you use Revise.jl and Rebugger.jl you can do exactly what you are asking for.

You can put in a breakpoint and step into code that is in an included file.

If you include a file from the julia prompt that you want tracked by Revise.jl, you need to use includet(.

The keyboard shortcuts in Rebugger let you iterate and inspect variables and modify code and rerun it from within an included file with real values.

Revise lets you reload functions and modules without needing to restart a julia session to pick up the changes.

https://timholy.github.io/Rebugger.jl/stable/

https://timholy.github.io/Revise.jl/stable/

The combination is very powerful and is described deeply by Tim Holy.

https://www.youtube.com/watch?v=SU0SmQnnGys

https://youtu.be/KuM0AGaN09s?t=515

Note that there are some limitations with Revise, such as it doesn't reset global variables, so if you are using some global count or something, it won't reset it for the next run through or when you go back into it. Also it isn't great with runtests.jl and the Test package. So as you develop with Revise, when you are done, you move it into your runtests.jl.

Also the Juno IDE (Atom + uber-juno package) has good support for code inspection and running line by line and the debugging has gotten some good support lately. I've used Rebugger from the julia prompt more than from the Juno IDE.

Hope that helps.


I'm not quite sure what you're looking to do, but it sounds like you might be better off writing your code as a function, and use a return to exit. You could even call the function in the include.


Kristoffer will not love it, but

stop(text="Stop.") = throw(StopException(text))

struct StopException{T}
    S::T
end

function Base.showerror(io::IO, ex::StopException, bt; backtrace=true)
    Base.with_output_color(get(io, :color, false) ? :green : :nothing, io) do io
        showerror(io, ex.S)
    end
end

will give a nice, less alarming message than just throwing an error.

julia> stop("Stopped. Reason: Converged.")
ERROR: "Stopped. Reason: Converged."

Source: https://discourse.julialang.org/t/a-julia-equivalent-to-rs-stop/36568/12

Tags:

Julia