When interacting with TimerOutputs.jl, only displays lowered code

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

还没有人认领这个 Issue。

评估

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

调研方向

首先,使用 @timeit 和 @enter,通过 Julia 1.11.3、Debugger 0.7.10 和 TimerOutputs 0.5.27 复现所提供的 MWE。检查 Debugger 如何处理计时函数及其 lowering 后的显示。完成的标准是:在保持计时启用的情况下,能够正常逐步执行原始函数的源代码。

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

描述

If I try to debug a function that I'm also timing using TimerOutputs, only lowered code is displayed, and I cannot step normally through the function.

MWE:

julia> using TimerOutputs

julia> using Debugger

julia> my_timer = TimerOutput()
────────────────────────────────────────────────────────────────────
                           Time                    Allocations      
                  ───────────────────────   ────────────────────────
Tot / % measured:     91.5ms /   0.0%           4.68MiB /   0.0%    

Section   ncalls     time    %tot     avg     alloc    %tot      avg
────────────────────────────────────────────────────────────────────
────────────────────────────────────────────────────────────────────

julia> @timeit my_timer foo() = begin
       println("hello")
       end
foo (generic function with 1 method)

julia> @enter foo()
In foo() at none:0
  3  │          Core.NewvarNode(:(b₀#233))
  4  │          Core.NewvarNode(:(accumulated_data#232))
  5  │          local_to#230 = Main.my_timer
  6  │    %6  = local_to#230
> 7  │          enabled#231 = Base.getproperty(%6, :enabled)
  8  │    %8  = enabled#231
  9  └───       goto #3 if not %8
 10  2 ── %10 = local_to#230
 11  └───       accumulated_data#232 = (push!)(%10, "foo")

About to run: <getproperty(─────────────────────────────...>
1|debug> n
hello
In foo() at none:0
 28  10 ┄ %28 = @_8 === 1
 29  └───       goto #12 if not %28
 30  11 ─       Base.rethrow()
 31  12 ┄ %31 = val#235
>32  └───       return %31

About to run: return
1|debug> 

julia> 

This using Julia-1.11.3, Debugger-0.7.10 and TimerOutputs-0.5.27.

Obvious workaround is to take out the timing while I'm debugging, but that's not ideal especially in a bigger code where there might be many timed functions.

主要语言
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 摘要。