类 IRB::Frame
常量
- CALL_STACK_OFFSET
默认帧偏移数量
- INIT_STACK_TIMES
默认堆栈帧数量
公共类方法
bottom(n = 0) 点击切换源代码
Frame#bottom
的便捷方法
# File lib/irb/frame.rb, line 61 def Frame.bottom(n = 0) @backtrace.bottom(n) end
new() 点击切换源代码
创建一个新的堆栈帧
# File lib/irb/frame.rb, line 26 def initialize @frames = [TOPLEVEL_BINDING] * INIT_STACK_TIMES end
sender() 点击切换源代码
返回从最后一个初始化的帧调用的绑定上下文
# File lib/irb/frame.rb, line 71 def Frame.sender eval "self", @backtrace.top end
top(n = 0) 点击切换源代码
Frame#top
的便捷方法
# File lib/irb/frame.rb, line 66 def Frame.top(n = 0) @backtrace.top(n) end
公共实例方法
bottom(n = 0) 点击切换源代码
返回从第一个初始化的帧开始的调用堆栈上的 n
个帧。
如果给定堆栈范围内没有帧,则引发 FrameOverflow
。
# File lib/irb/frame.rb, line 54 def bottom(n = 0) bind = @frames[n] fail FrameOverflow unless bind bind end
top(n = 0) 点击切换源代码
返回从最后一个初始化的帧开始的调用堆栈上的 n
个帧。
如果给定堆栈范围内没有帧,则引发 FrameUnderflow
。
# File lib/irb/frame.rb, line 44 def top(n = 0) bind = @frames[-(n + CALL_STACK_OFFSET)] fail FrameUnderflow unless bind bind end
trace_func(event, file, line, id, binding) 点击切换源代码
由 Kernel#set_trace_func
用于在调用堆栈中注册每个事件
# File lib/irb/frame.rb, line 31 def trace_func(event, file, line, id, binding) case event when 'call', 'class' @frames.push binding when 'return', 'end' @frames.pop end end