Julia 的新 Debugger.jl 很棒,但有时要达到我想要达到的代码中的确切位置有点痛苦。
有没有办法可以进入交互式调试模式,类似于 Python 在 pdb.set_trace() 或 ipdb.set_trace() 中的模式?例如,我希望能够在我希望调试器启动的位置插入一行代码,如下所示:
function myfunc(a, b)
# do stuff
set_trace() # interactive debug mode will start here
# do other stuff
end
附注我知道这基本上就像在 Juno 中设置断点一样,但是 1)我不能总是在 Juno 中开发; 2)即使经过一番努力,我也无法真正让断点与 Juno 的调试器很好地配合工作。这可能是我的用户错误,但我确信其他 Julia 新手也会遇到同样的问题,并且会喜欢 pdb.set_trace() 这样的解决方案。
您正在寻找的功能非常简洁:
@bp
只需确保您已加载调试器包以便可以使用它:
using Debugger
请注意,如果您通过普通方法运行最外层函数(例如 myfunc),它实际上不会在断点处停止。您需要使用以下命令在调试模式下运行它@enter
or @run
。这是一个完整的示例:
using Debugger
function myfunc(a, b)
c = a + b
@bp # interactive debug mode will start here
c += 1
end
@run myfunc(42, 5)
(Juno 有时会产生奇怪的行为 https://stackoverflow.com/questions/56228328/debugging-with-debugger-not-working-in-julia-when-using-juno-atom/56228329#56228329当你运行@run ...
使用 CTRL+ENTER 行。最好将该特定行直接复制并粘贴到 REPL 中。)
@bp
实际上是一个宏,是 JuliaInterpreter.jl 的一部分。该模块还有许多其他有用的调试功能 - 请参阅JuliaInterpreter 文档 https://juliadebug.github.io/JuliaInterpreter.jl/latest/dev_reference/#JuliaInterpreter.@bp更多细节。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)