如何获取有关julia数组边界错误的更多信息?

如何获取有关julia数组边界错误的更多信息?,julia,Julia,我编写了一个带有数组边界错误的Julia函数: function wrong() alphas = [ 0.5, 1, 1.25, 2.0 ] ; theta = 0:0.02:1 * pi ; U = zeros( length(theta), 4 ) ; i = 1 ; j = 1 ; for a = alphas kd = pi * a ; for t = theta v = (cos( kd * cos(

我编写了一个带有数组边界错误的Julia函数:

function wrong()

   alphas = [ 0.5, 1, 1.25, 2.0 ] ;
   theta = 0:0.02:1 * pi ;
   U = zeros( length(theta), 4 ) ;

   i = 1 ;
   j = 1 ;
   for a = alphas
      kd = pi * a ;

      for t = theta
         v = (cos( kd * cos( t ) ) - cos( kd ))/sin( t ) ;

         U[i, j] = v ;

         i = i + 1 ;
      end

      j = j + 1 ;
   end
end
这里i=1应该在循环中。我得到:

julia> wrong()
ERROR: BoundsError()
 in setindex! at array.jl:308 (repeats 2 times)

有没有办法让julia解释器在遇到异常时提供有关异常的更详细信息,或者有没有办法调试失败的语句并查看发生了什么?例如,了解在发生这种情况时导致边界错误的索引值将有助于对此进行调试。

通过此拉动请求,julia v0.4中的边界错误报告有所改进。在julia 0.4中,默认情况下会打印您试图访问的数组和索引:

julia> wrong()
ERROR: BoundsError: attempt to access 158x4 Array{Float64,2}:
 NaN           0.0  0.0  0.0
   0.0157085   0.0  0.0  0.0
   0.0314201   0.0  0.0  0.0
   0.047138    0.0  0.0  0.0
   0.0628651   0.0  0.0  0.0
   0.0786045   0.0  0.0  0.0
   0.094359    0.0  0.0  0.0
   0.110131    0.0  0.0  0.0
   0.125924    0.0  0.0  0.0
   0.141739    0.0  0.0  0.0
   ⋮
   0.127183    0.0  0.0  0.0
   0.111388    0.0  0.0  0.0
   0.0956143   0.0  0.0  0.0
   0.0798585   0.0  0.0  0.0
   0.064118   0.0  0.0  0.0
   0.04839     0.0  0.0  0.0
   0.0326715   0.0  0.0  0.0
   0.0169595   0.0  0.0  0.0
   0.00125087  0.0  0.0  0.0
  at index [159,2]
 in wrong at none:15

我不知道您是否可以将更改后移到julia版本,但是切换到0.4应该可以解决您的问题

>无关、肤浅、挑剔的文体细节:在朱丽亚中,用<代码> > += 增加了一种更好的风格,避免用分号结束语句。+ =我可以做,但是分号会成为一个很难打破的习惯,因为我主要是用C++编写的。