sl (step into last call in line) is unreliable

未关闭
#423 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
48/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
活跃
技术栈
julia
领域
devtools

调研方向

使用所示的 Julia 调用以及调试器命令 sl 和 so 重现报告,从 matmul.jl:34 和 ldiv.jl:98 处的调用开始。跟踪 sl 如何处理 materialize 调用,并将其与步出调用进行比较;当 sl 能可靠地进入该行中的最后一个调用,而不是表现得像 so 时,即视为完成。

由索引模型根据 Issue 内容生成。

描述

I'm not sure how to make a "MWE" but here is a run-through of the problem: If I run sl on the following it works fine:

[1/1] \(A, B) at /Users/solver/.julia/packages/QuasiArrays/B65Uq/src/matmul.jl:34
>34  @inline \(A::AbstractQuasiArray, B::AbstractQuasiArray) = ldiv(A,B)

  A::Fourier{Float64} = Fourier{Float64}()  (arg)
  B::QuasiArrays.BroadcastQuasiVector{…} = <cos.(Inclusion(DomainSets.RealNumb...>  (arg)

→ ldiv(Fourier{Float64}(), cos.(Inclusion(DomainSets.RealNumbers())))

1|debug> sl

But the following is equivalent to so instead of stepping into the materialize call:

[1/3] ldiv(A, B; kwds) at /Users/solver/.julia/packages/ArrayLayouts/RCHQ8/src/ldiv.jl:98
>98  @inline ldiv(A, B; kwds...) = materialize(Ldiv(A,B); kwds...)

  A::Fourier{Float64} = Fourier{Float64}()  (arg)
  B::QuasiArrays.BroadcastQuasiVector{…} = <cos.(Inclusion(DomainSets.RealNumb...>  (arg)
  kwds::Base.Pairs{…} = Base.Pairs{Symbol, Union{}, Nothing, @NamedTuple{}}()  (arg)

→ (ArrayLayouts.Ldiv)(Fourier{Float64}(), cos.(Inclusion(DomainSets.RealNumbers())))
1|debug> sl

Thus it steps out and produces the following:

[1/1] \(A, B) at /Users/solver/.julia/packages/QuasiArrays/B65Uq/src/matmul.jl:34
>34  @inline \(A::AbstractQuasiArray, B::AbstractQuasiArray) = ldiv(A,B)

  A::Fourier{Float64} = Fourier{Float64}()  (arg)
  B::QuasiArrays.BroadcastQuasiVector{…} = <cos.(Inclusion(DomainSets.RealNumb...>  (arg)

→ <return [-7.16273e-18, 1.08148e-18, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...>
主要语言
Julia
星标
515
派生
50
PR 合并指标
30 天内没有已合并 PR

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

JuliaDebug/Debugger.jl 的其他 Issue

查看 JuliaDebug/Debugger.jl 的全部 Issue

相似的 Issue

更多 Julia Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。