1

(我在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 中。然后我按“下一个表达式”按钮,直到我认为可以进入该功能的那一刻(如下图),然后我按“步入该功能”。错误如下所示。

图 1

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>:?
4

1 回答 1

0

这看起来像是调试器中的一个错误。您可以尝试在https://github.com/JuliaDebug/JuliaInterpreter.jl(这是调试器的后端)提交一个(可重现的)问题。

于 2019-11-16T13:12:05.303 回答