Open vlasdas-uu opened 3 years ago
I'll add that I seem to have something similar going on. The code I'm using is rather more complicated, so I might return with a more minimal case later.
This will probably be fixed in the next release, which includes an updated JuliaInterpreter with a bunch of bugfixes.
So I've just had a check on the most recent release (1.1.25), and while it does seem to work with a simple example:
numbers = 1:5
addFive(n) = n + 5
bigger = addFive.(numbers)
My more complex code I'm using at the moment murders the debugger something fierce. The error I get is as follows:
This code is the smallest working example I can get:
So it looks like CSV.File is crashing it, BUT that code works completely fine when running via Julia: Execute File
. Here's my environment:
Julia Version 1.5.3
Commit 788b2c77c1* (2020-11-09 13:37 UTC)
Platform Info:
OS: Linux (x86_64-pc-linux-gnu)
CPU: Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-10.0.1 (ORCJIT, skylake)
Environment:
JULIA_EDITOR = "/opt/visual-studio-code/code"
JULIA_NUM_THREADS =
I hope that helps!
Thanks for the MWE. Will look into it.
Anyways, I'd very much recommend using @run
/@enter
specifically for the code you want to debug (which usually isn't a CSV.File
call).
Ok, I can't repro the crash with the CSV file you're trying to read. Just with
a b
1 2
everything works fine.
Will try with that CSV file. What do you mean by using @run
/@enter
? (Sorry, am relatively new to Julia, and that CSV.File
line was the one in my code that seemed to kill things).
Edit: Can confirm that CSV file works fine. I'll try and MWE-ise mine, but it's still a debugger issue, seeing as it runs fine when just executing.
Sure, it's just a hard-to-fix issue if we can't repro it :)
With @run
/@enter
I meant starting a session in the integrated REPL, running your setup code, and then invoking the debugger with e.g. @run main()
. That way you can run all of your code normally and only start debugging when needed.
Whew okay that was a wild journey to whittle down. MWE csv:
StartDate,Q2_Id
Start Date,"Please upload your savefile if you can - it'll be named something like __InterceptionXX.gz. You'll find it at:
Documents\My Games\Wesnoth\saves\ on Windows,or
~/.local/share/wesnoth//saves/ on Linux - ID"
2020-08-23 04:52:09,
2020-08-23 05:08:02,
2020-08-23 10:06:36,F_3smplS6AiQMH7Gy
And crashes (only while debugging) on
using CSV
println("Testing whole file")
raw = CSV.File("testCsv2.csv")
show(raw)
println()
println("Success")
with the error
┌ Warning: Some Julia code in the VS Code extension crashed with
│ e = TypeError: in typeassert, expected DataType, got Type{Array{T,N} where N}
└ @ VSCodeDebugger ~/.vscode/extensions/julialang.language-julia-1.1.25/scripts/error_handler.jl:5
ERROR: TypeError: in typeassert, expected DataType, got Type{Array{T,N} where N}
Stacktrace:
[1] parametric_type_to_expr(::Type) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/optimize.jl:251
[2] build_compiled_call!(::Expr, ::Symbol, ::Core.CodeInfo, ::Int64, ::Int64, ::Array{Symbol,1}, ::Module) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/optimize.jl:342
[3] optimize!(::Core.CodeInfo, ::Method) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/optimize.jl:192
[4] VSCodeDebugger.JuliaInterpreter.FrameCode(::Method, ::Core.CodeInfo; generator::Bool, optimize::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/types.jl:101
[5] prepare_framecode(::Method, ::Any; enter_generated::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/construct.jl:190
[6] prepare_call(::Any, ::Array{Any,1}; enter_generated::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/construct.jl:261
[7] get_call_framecode(::Array{Any,1}, ::VSCodeDebugger.JuliaInterpreter.FrameCode, ::Int64; enter_generated::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/localmethtable.jl:63
[8] evaluate_call_recurse!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr; enter_generated::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:224
[9] evaluate_call_recurse! at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:201 [inlined]
[10] eval_rhs(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:394
[11] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Any, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:537
[12] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/interpret.jl:587
[13] finish!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:14
[14] finish_and_return!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:29
[15] finish_stack!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:59
[16] debug_command(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Symbol, ::Bool; line::Nothing) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:473
[17] debug_command(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Symbol, ::Bool) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/JuliaInterpreter/src/commands.jl:415
[18] #invokelatest#1 at ./essentials.jl:710 [inlined]
[19] invokelatest at ./essentials.jl:709 [inlined]
[20] our_debug_command(::Symbol, ::VSCodeDebugger.DebugAdapter.DebuggerState) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/DebugAdapter/src/debugger_core.jl:67
[21] startdebug(::Base.PipeEndpoint, ::VSCodeDebugger.var"#3#4"{Tuple{String,String}}) at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/DebugAdapter/src/packagedef.jl:102
[22] startdebugger() at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/packages/VSCodeDebugger/src/VSCodeDebugger.jl:38
[23] top-level scope at /home/dan/.vscode/extensions/julialang.language-julia-1.1.25/scripts/debugger/run_debugger.jl:9
I suspect that super-unusual "Please upload your savefile..." cell with the newlines causes some type shenanigans, though I have absolutely no clue why it'd work when executing but not in the debugging. Perhaps the debugger can't handle those shenanigans or early-exits gracefully? I'd think this was a bug with CSV if it wasn't for the fact that it seems to work fine when not debugging :/
I'd ticked the break on Uncaught Exceptions box so that I could see where it's dying - I don't know if it'll help, but here's a screenshot of that.
Hope all this helps a little!
Yes, that helps a lot. The bug should be fixed with https://github.com/JuliaDebug/JuliaInterpreter.jl/pull/466.
In the latest release (1.1.34), I can confirm that the MWE above works just fine. I'll add that my original code that broke the debugger - a 460-line monster that should never see the light of day - hasn't seemed to crash the debugger, though it took a long while to get through it all. I can see why you advocate only calling the debugger when needed, at that speed.
I anticipate https://github.com/julia-vscode/julia-vscode/pull/1888 to help a lot with that.
I anticipate #1888 to help a lot with that.
That looks amazing! Thank you for all your work here :)
When trying to debug the following piece of code,
using OpenAIGym
env = GymEnv("MountainCar-v0") # offending line
the debugger crashes all the time. I have tried it both in Linux(Ubuntu) and Windows 10, both visual studio code and code-insiders, and the error can be reproduced consistently. The code crashes in both extensions 1.0.7 and 1.0.8.
The code is running properly. No issue there, only when debugging. Stacktrace for Windows 10:
It would be nice to have a fully functional debugger in Julia for VS Code and in Julia in general.