gpt4 book ai didi

ruby-on-rails - byebug 中的 Rails 多行调试或如何在单行中进行救援

转载 作者:数据小太阳 更新时间:2023-10-29 06:59:33 24 4
gpt4 key购买 nike

有时我需要调试一些讨厌的异常,它的回溯被隐藏或截断,比如没有任何堆栈跟踪的 ArgumentError

我习惯用byebug调试。问题是 byebug 解释器是一个 REPL,所以不可能写多行代码。我正在尝试弄清楚如何进行内联救援并从那里打印回溯,即我想要一个内联的、与 REPL 兼容的版本

begin 
....
rescue => e
puts e.backtrace.join("\n")
end

我试过了

begin; my_crashing_method.call; rescue Exception => e; puts e.backtrace; end

但是那一行引发了 SyntaxError

*** SyntaxError Exception: (byebug):1: syntax error, unexpected keyword_rescue
rescue Exception => e
^

我不确定我错过了什么?

编辑

上面的行在常规 IRB/Rails shell 上运行良好,但在 byebug shell 上运行不正常

内部评级委员会

begin my_crashing_method.call; rescue Exception => e; puts e.backtrace end

Stack Trace shows successfully

再见

(byebug) begin; my_crashing_method.call; rescue Exception => e; puts e.backtrace
*** SyntaxError Exception: (byebug):1: syntax error, unexpected end-of-input
begin
^

nil
*** NameError Exception: undefined local variable or method `my_crashing_method' for #<StaticPagesController:0x007fae79f61088>

nil
*** SyntaxError Exception: (byebug):1: syntax error, unexpected keyword_rescue
rescue Exception => e
^

nil
*** NameError Exception: undefined local variable or method `e' for #<StaticPagesController:0x007fae79f61088>

nil

最佳答案

当你在byebug上输入多行ruby代码或单行代码时,你需要使用backlash对分号进行转义。以下应该可以解决问题。

begin\; my_crashing_method.call\; rescue Exception => e\; puts e.backtrace end

https://github.com/deivid-rodriguez/byebug/blob/master/GUIDE.md#command-syntax

关于ruby-on-rails - byebug 中的 Rails 多行调试或如何在单行中进行救援,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42388199/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com