相当于 Julia 中用于调试的 Rstudio `browser()` 函数

Álv*_*gas 5 r rstudio julia juno-ide

我想知道是否有与RStudiobrowser()中可用的语句等效的语句用于 Julia 的调试目的(我目前正在使用 Juno IDE)。

R函数在被调用时browser()停止执行并调用 an 。environment browser因此,原则上,我们可以将browser()代码中的任何位置放置在该特定行中,并查看当时环境中存储的内容,这对于调试目的非常有用。

例如,下面的代码将在 时停止i>3。因此,这正是我们将environment browser在 RStudio 中看到的内容,我们将i=4在代码中观察到这一点。

for (i in 1:5) {
  print(i)  
  if (i>3) {
    browser()
  }
}
[1] 1
[1] 2
[1] 3
[1] 4
Called from: eval(ei, envir)
Browse[1]> 
Run Code Online (Sandbox Code Playgroud)

ahn*_*abb 4

看一下Debugger.jl。具体来说,在源代码中放置断点部分:

\n
\n

有时在源代码中选择何时中断会更方便。例如,在 Matlab/Octave 中使用键盘完成此操作,在 R 中使用 browser() 完成此操作。您可以使用 @bp 宏来执行此操作

\n
\n

您的 R 示例已翻译为 Julia:

\n
julia> using Debugger\n\njulia> @run for i in 1:5\n           println(i)\n           if i > 3\n               @bp\n           end\n       end\n1\n2\n3\n4\nHit breakpoint:\nIn ##thunk#257() at REPL[4]:1\n  9  \xe2\x94\x82         Base.println(i)\n 10  \xe2\x94\x82   %10 = i > 3\n 11  \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80       goto #4 if not %10\n\xe2\x97\x8f12  3 \xe2\x94\x80       nothing\n>13  4 \xe2\x94\x84       @_2 = Base.iterate(%1, %8)\n 14  \xe2\x94\x82   %14 = @_2 === nothing\n 15  \xe2\x94\x82   %15 = ($(QuoteNode(Core.Intrinsics.not_int)))(%14)\n 16  \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80       goto #6 if not %15\n 17  5 \xe2\x94\x80       goto #2\n\nAbout to run: (iterate)(1:5, 4)\n1|debug>\n
Run Code Online (Sandbox Code Playgroud)\n

这是Julia的通用解决方案,Juno IDE还集成了调试:调试、Juno手册

\n