Debugging 使用Juno IDE调试Julia脚本

Debugging 使用Juno IDE调试Julia脚本,debugging,julia,juno-ide,Debugging,Julia,Juno Ide,我是Julia的新手,1.39.1版,尝试使用Juno IDE(Atom)调试一个玩具示例函数。我能够在这篇文章中得到这个例子,但是我不知道如何在我的Julia脚本或函数上启动调试器。这看起来很有希望,但示例图像被破坏了。相关的 我试过使用Juno.@enter(outer_prod([1,2,3],[1,1,1]),但无效 如何在脚本或函数上使用调试器 @enter不是一个函数,而是一个宏。只需删除它后面的括号并添加一个空格:@enter foo(),而不是@enter(foo())。在调试器

我是Julia的新手,1.39.1版,尝试使用Juno IDE(Atom)调试一个玩具示例函数。我能够在这篇文章中得到这个例子,但是我不知道如何在我的Julia脚本或函数上启动调试器。这看起来很有希望,但示例图像被破坏了。相关的

我试过使用
Juno.@enter(outer_prod([1,2,3],[1,1,1])
,但无效

如何在脚本或函数上使用调试器


@enter
不是一个函数,而是一个宏。只需删除它后面的括号并添加一个空格:
@enter foo()
,而不是
@enter(foo())
。在调试器中,您可以通过键入
help

来获得如何操作的帮助。如果您想学习Juno上的调试,请从简单的内容开始

function foo(x,y)
    z = x + y
    return z
end
第一步。非常重要!用Juno保存文件

第二步。按“停止”按钮停止现有进程

第三步。按“播放”按钮运行文件

第四步。在REPL上键入此选项

Juno.@enter foo(2,3)

第五步。使用Juno上的debugger窗格

正如@pfitzseb在问题注释中所建议的那样,您必须使用函数的模块(基本上是函数所在的脚本)来限定您的函数,以便使用REPL开始调试。当前工作模块可以在Juno IDE的右下角找到。调试特定模块中函数的命令是
Juno。@enter(MyModule.func_name(args))

应该不需要停止并重新启动当前的Julia进程。使用括号调用宏是完全有效的:
Meta.parse(@foo(2)”==Meta.parse(@foo 2”)
为true。在某些情况下,它也非常有用,因为parens-less宏调用对空格非常敏感?
Juno
菜单应该有一个
Debug Information
条目,该条目应该包含所有相关信息。FWIW,您的确切示例(使用
Juno进入调试器。@enter
是正确的)对我来说很好。Julia(1.39.1),Juno(1.2.0-1)。当我在REPL
Juno中输入时。@enter(outer_prod([1,2,3],[1,1,1])错误:UndefVarError:outer_prod未定义
。好的,我现在开始工作了,我把
Juno.@enter(outer_prod(x,y))
放在我的脚本末尾。在我尝试在REPL中输入该命令之前。我将把我所做的作为答案发布,您可以告诉我这是否是使用调试器的正确方法。
Juno.@enter
不应在脚本中使用。我怀疑您的代码在一个模块中,但REPL没有设置为该模块。因此,要么正确地限定
outer\u prod
(例如
Juno。@输入(MyModule.outer\u prod(x,y))
,要么将REPL设置为正确的模块(右下角有一个指示器).好的,很好,谢谢你的建议,让模块正常工作。我原以为调试器的运行方式可能类似于Matlab,但似乎只有函数可以调试