PyReverseDims in VS Code Debug Mode throws Error
- Dominant language
- Julia
- Stars
- 1.5k
- Forks
- 186
- PR merge metrics
- No merged PRs in 30d
Description
Hi there,
I was trying to debug code with VS Code that includes PyCall/Python Code, but every time it raises an error. Non-Debug mode is working great. It seems like PyReverseDims is the problem.
Thank you so much in advance. Sorry if there are information missing, this is one of my first issues on GitHub :)
I think the problematic part where it crashes is this:
```
decisionSteps, terminalSteps = env.pyEnv.get_steps(env.behaviorName)
decisionStepConverted = DecisionStep(PyReverseDims(decisionSteps.obs)[1], PyReverseDims(decisionSteps.reward), PyReverseDims(decisionSteps.agent_id), decisionSteps)
terminalStepConverted = TerminalStep(PyReverseDims(terminalSteps.obs)[1], PyReverseDims(terminalSteps.reward), PyReverseDims(terminalSteps.agent_id), PyReverseDims(terminalSteps.interrupted), terminalSteps)
```
Here is the error with stacktrace:
```
┌ Warning: Some Julia code in the VS Code extension crashed with
│ e =
│ MethodError: no method matching PyReverseDims(::PyObject)
│ Closest candidates are:
│ PyReverseDims(::StridedArray{T, N}) where {T<:Union{Complex{Float32}, Complex{Float64}, Bool, Float16, Float32, Float64, Int16, Int32, Int64, Int8, Ptr{PyCall.PyObject_struct}, UInt16, UInt32, UInt64, UInt8, PyObject}, N} at C:\Users\Peter\.julia\packages\PyCall\BcTLp\src\numpy.jl:197
│ PyReverseDims(::BitArray) at C:\Users\Peter\.julia\packages\PyCall\BcTLp\src\numpy.jl:204
│ PyReverseDims(::AbstractArray{T,2} where T) at C:\Users\Peter\.julia\packages\PyCall\BcTLp\src\numpy.jl:208
│ ...
└ @ VSCodeDebugger c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\error_handler.jl:5
ERROR: MethodError: no method matching PyReverseDims(::PyObject)
Closest candidates are:
PyReverseDims(::StridedArray{T, N}) where {T<:Union{Complex{Float32}, Complex{Float64}, Bool, Float16, Float32, Float64, Int16, Int32, Int64, Int8, Ptr{PyCall.PyObject_struct}, UInt16, UInt32, UInt64, UInt8, PyObject}, N} at C:\Users\Peter\.julia\packages\PyCall\BcTLp\src\numpy.jl:197
PyReverseDims(::BitArray) at C:\Users\Peter\.julia\packages\PyCall\BcTLp\src\numpy.jl:204
PyReverseDims(::AbstractArray{T,2} where T) at C:\Users\Peter\.julia\packages\PyCall\BcTLp\src\numpy.jl:208
...
Stacktrace:
[1] prepare_call(::Any, ::Array{Any,1}; enter_generated::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\construct.jl:259
[2] get_call_framecode(::Array{Any,1}, ::VSCodeDebugger.JuliaInterpreter.FrameCode, ::Int64; enter_generated::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\localmethtable.jl:63
[3] evaluate_call_recurse!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr; enter_generated::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:225
[4] evaluate_call_recurse! at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:202
[inlined]
[5] eval_rhs(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:389
[6] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Any, ::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:529
[7] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:579
[8] finish!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\commands.jl:14
[9] finish_and_return! at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\commands.jl:29 [inlined]
[10] evaluate_call_recurse!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr; enter_generated::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:240
[11] evaluate_call_recurse! at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:202 [inlined]
[12] eval_rhs(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:389
[13] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Any, ::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:529
[14] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:579
[15] finish!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\commands.jl:14
[16] finish_and_return! at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\commands.jl:29 [inlined]
[17] evaluate_call_recurse!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr; enter_generated::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:240
[18] evaluate_call_recurse! at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:202 [inlined]
[19] eval_rhs(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Expr) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:389
[20] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Any, ::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:445
[21] step_expr!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\interpret.jl:579
[22] finish!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\commands.jl:14
[23] finish_and_return!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\commands.jl:29
[24] finish_stack!(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\commands.jl:59
[25] debug_command(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Symbol, ::Bool; line::Nothing) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\commands.jl:473
[26] debug_command(::Any, ::VSCodeDebugger.JuliaInterpreter.Frame, ::Symbol, ::Bool) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\JuliaInterpreter\src\commands.jl:415
[27] #invokelatest#1 at .\essentials.jl:710 [inlined]
[28] invokelatest at .\essentials.jl:709 [inlined]
[29] our_debug_command(::Symbol, ::VSCodeDebugger.DebugAdapter.DebuggerState) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\DebugAdapter\src\debugger_core.jl:65
[30] startdebug(::Base.PipeEndpoint, ::VSCodeDebugger.var"#3#4"{Tuple{String,String}}) at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\DebugAdapter\src\packagedef.jl:102
[31] startdebugger() at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\packages\VSCodeDebugger\src\VSCodeDebugger.jl:38
[32] top-level scope at c:\Users\Peter\.vscode\extensions\julialang.language-julia-1.0.8\scripts\debugger\run_debugger.jl:7
[33] include(::Function, ::Module, ::String) at .\Base.jl:380
[34] include(::Module, ::String) at .\Base.jl:368
[35] exec_options(::Base.JLOptions) at .\client.jl:296
[36] _start() at .\client.jl:506
```
Nearly all of my PyCall Code. All of this seems to work fine, until the PyReverseDims part:
```
using PyCall
function __init__()
PyMlagents = pyimport("mlagents")
PyMlagents_envs_environment = pyimport("mlagents_envs.environment")
py"""
import mlagents
from mlagents_envs.environment import UnityEnvironment
from mlagents_envs.side_channel.engine_configuration_channel import EngineConfigurationChannel
def initUnityEnvironment(path, seedInput=1, workerID=1):
channel = EngineConfigurationChannel()
env = UnityEnvironment(file_name=path, seed=seedInput, worker_id=workerID, side_channels=[channel])
channel.set_configuration_parameters(time_scale = 50.0)
env.reset()
behavior_name = list(env.behavior_specs)[0]
spec = env.behavior_specs[behavior_name]
return (env, behavior_name, spec)
"""
end
```
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.