ruby: 如何在调试时单步执行任意函数

ruby: How to step into arbitrary function while debugging

假设我在调试时停在了点上:

def get_data
    byebug
 => @cache ||= calculate_data
end

@cache有值,所以step函数calculate_data不会被执行。但是我需要在这个确切的运行时点检查 calculate_data 内部发生了什么。

我可以只执行 calculate_data 并在控制台输出中查看其结果,但是我可以从调试控制台 执行函数 并同时 step into 它吗? (使用 byebug 或其他调试工具)。

目标 - 是在任意时间检查 calculate_data 逻辑,特别是当 get_data 调用 @cache 时。

使用 pry-moves 您可以从当前上下文执行任意函数的单独调试:

def get_data
    binding.pry
 => @cache ||= calculate_data
end

键入 debug calculate_data 到 运行 calculate_data 并停在其中的第一行。