macro debugcb(ex)
    seen = false
    ex = MacroTools.prewalk(ex) do x
        if !seen && MacroTools.@capture(MacroTools.shortdef(x), f_(xs__) = body_)
            seen = true
            def = MacroTools.splitdef(x)
            debug_ex = :($Base.@info $f)
            push!(debug_ex.args, map(MacroTools.namify, def[:args])...)
            # debug_ex = :(println($f, $(map(MacroTools.namify, def[:args])...)))
            pushfirst!(def[:body].args, debug_ex)
            return MacroTools.combinedef(def)
        else
            return x
        end
    end
    return esc(ex)
end
