【问题标题】:Can I make ruby display method parameter values in a backtrace?我可以在回溯中制作 ruby​​ 显示方法参数值吗?
【发布时间】:2010-08-26 15:22:17
【问题描述】:

使用 MRI 1.9

当引发导致打印回溯的异常时,如果回溯显示接收者和方法参数的值以及方法名称,通常会非常容易调试。有没有办法做到这一点?

考虑以下情况,例如将 nil 传递到库代码中出乎意料的深度,或者两个字符串具有不兼容的编码并且某些例程试图将它们连接起来

【问题讨论】:

    标签: ruby debugging backtrace


    【解决方案1】:

    您可以使用 backtracer gem 来使用 1.8.6。

    1.9 的回调略有损坏,因此尚不兼容。如果需要,我也许可以让它工作。

    您可以使用委托之类的东西并查看单个对象的参数:

    A级 def 去 a, b 结尾 结尾 A2级 def 初始化 *args @delegate = A.new *args 结尾 def method_missing meth, *args p "接到#{meth}的电话", args.join(', ') @delegate.send(meth,*args) 结尾 结尾

    哪个输出

    “在 go2 中” “有电话要走” “3、4”

    【讨论】:

    • 我猜“否”/“还没有”那么这至少构成了一个答案,即使它不是我所希望的 ;-) 当你说 1.9 有“回调中断”时这是一个设计决定还是只是一个可能有一天会被修复的错误?
    猜你喜欢
    • 2020-08-26
    • 2019-06-23
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 2017-02-21
    • 2015-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多