Julia中的编译器消息

考虑以下代码:

C.jl文件

module C

export printLength

printLength = function(arr)
    println(lentgh(arr))
end

end #module

Main.jl文件

using C

main = function()
    arr = Array(Int64, 4)
    printLength(arr)
end

main()

让我们尝试执行它。

$ julia Main.jl 
ERROR: lentgh not defined
 in include at /usr/bin/../lib64/julia/sys.so
 in process_options at /usr/bin/../lib64/julia/sys.so
 in _start at /usr/bin/../lib64/julia/sys.so
while loading /home/grzes/julia_sucks/Main.jl, in expression starting on line 8

显然,它不会被编译,因为lentgh它拼写错误。问题是我收到的消息。expression starting on line 8很简单main()朱莉娅绝望地指出了无效的代码片段-它只是指向的调用main,但错误行甚至不在该文件中!现在想象一个真实的项目,其中的错误实际上隐藏在调用堆栈的深处。除了问题从执行的入口点开始,Julia仍然不愿透露任何其他信息。那样做是不可能的...

有没有办法强迫朱莉娅讲一些更准确的信息?

智者

在这种情况下,几乎可以肯定是内联的结果:您的printLength函数是如此之短,几乎可以肯定地将其内联到调用站点中,这就是为什么要获得行号8的原因。

最终,预期内联不会导致回溯问题。目前,最好的选择是-如果您正在运行julia的预发行版本0.4--则启动julia,julia --inline=no然后再次运行测试。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章