(我在Julia 论坛上问过同样的问题,这是帖子链接,如果您有兴趣)
ubuntu 16.04.5 + julia 0.6.4 + atom 1.41.0 + juno
大家好,我是朱莉娅的新手。我尝试运行和调试来自https://github.com/jgorham/SteinDiscrepancy.jl的代码“test/runtests.jl” (我主要想单行调试此代码并研究它是如何工作的。)我已经查看了相关文档,包括https://docs.junolab.org/latest/man/debugging/
“test/runtests.jl”可以成功运行,
另外,由于juno不支持调试非函数文件,所以我做了一个小改动。
……
……
# Graph Stein discrepancy bounded test
function gsdbt()
res = gsd(points=UNIFORM_TESTDATA[:,1],
gradlogdensity=uniform_gradlogp,
solver=solver,
supportlowerbounds=[0.0],
supportupperbounds=[1.0])
end
此时它仍然可以成功运行,包括调试模式。
但我的目的是进入 gsd 函数(在https://github.com/jgorham/SteinDiscrepancy.jl/blob/master/src/discrepancy/stein_discrepancy.jl中定义)所以我设置断点并Juno.@enter gsdbt()
在 repl 中。然后我按“下一个表达式”按钮,直到我认为可以进入该功能的那一刻(如下图),然后我按“步入该功能”。错误如下所示。
julia> Juno.@enter gsdbt()
ERROR: UndefRefError: access to undefined reference
Stacktrace:
[1] startdebugging(::Array{ASTInterpreter2.JuliaStackFrame,1}) at /home/nick/.julia/v0.6/Atom/src/debugger/stepper.jl:104
[2] macro expansion at /home/nick/.julia/v0.6/Atom/src/repl.jl:118 [inlined]
[3] anonymous at ./<missing>:?
[4] eval(::Module, ::Any) at ./boot.jl:235
[5] eval_user_input(::Any, ::Base.REPL.REPLBackend) at ./REPL.jl:66
[6] macro expansion at ./REPL.jl:97 [inlined]
[7] (::Base.REPL.##1#2{Base.REPL.REPLBackend})() at ./event.jl:73
我想进入 gsd 函数,但我得到了 UndefRefError。我该如何解决?非常感谢。
——————这里有一些奇怪的现象可能对你有帮助。——————</p>
另外,我尝试输入Juno.@enter gsd()
(不是gsdbt),我很惊讶Atom会自动切换出一个文件(.julia/v0.6/SteingDiscrepancy/src/disvrepancy),但是我把这个项目放在桌面上,这意味着它们是两个文件(尽管内容相同)。
然后发生了预期的错误。
ERROR: Must provide non-empty array of sample points
如果我输入Juno.@enter gsd(……)
repl,直接得到UndefRefError
julia> Juno.@enter gsd(points=UNIFORM_TESTDATA[:,1],gradlogdensity=uniform_gradlogp,solver=solver,supportlowerbounds=[0.0],supportupperbounds=[1.0])
ERROR: UndefRefError: access to undefined reference
Stacktrace:
[1] lookup_var(::ASTInterpreter2.JuliaStackFrame, ::SSAValue) at /home/nick/.julia/v0.6/ASTInterpreter2/src/interpret.jl:3
[2] evaluate_call(::ASTInterpreter2.JuliaStackFrame, ::Expr) at /home/nick/.julia/v0.6/ASTInterpreter2/src/interpret.jl:32
[3] _step_expr(::ASTInterpreter2.JuliaStackFrame, ::ASTInterpreter2.JuliaProgramCounter) at /home/nick/.julia/v0.6/ASTInterpreter2/src/interpret.jl:87
[4] next_until!(::ASTInterpreter2.##7#8, ::ASTInterpreter2.JuliaStackFrame, ::ASTInterpreter2.JuliaProgramCounter) at /home/nick/.julia/v0.6/ASTInterpreter2/src/interpret.jl:144
[5] maybe_step_through_wrapper!(::Array{ASTInterpreter2.JuliaStackFrame,1}) at /home/nick/.julia/v0.6/ASTInterpreter2/src/ASTInterpreter2.jl:429
[6] macro expansion at /home/nick/.julia/v0.6/Atom/src/repl.jl:118 [inlined]
[7] anonymous at ./<missing>:?