當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Ruby Fiber.backtrace用法及代碼示例

本文簡要介紹ruby語言中 Fiber.backtrace 的用法。

用法

backtrace → array
backtrace(start) → array
backtrace(start, count) → array
backtrace(start..end) → array

返回光纖的當前執行堆棧。 startcountend 允許僅選擇部分回溯。

def level3
  Fiber.yield
end

def level2
  level3
end

def level1
  level2
end

f = Fiber.new { level1 }

# It is empty before the fiber started
f.backtrace
#=> []

f.resume

f.backtrace
#=> ["test.rb:2:in `yield'", "test.rb:2:in `level3'", "test.rb:6:in `level2'", "test.rb:10:in `level1'", "test.rb:13:in `block in <main>'"]
p f.backtrace(1) # start from the item 1
#=> ["test.rb:2:in `level3'", "test.rb:6:in `level2'", "test.rb:10:in `level1'", "test.rb:13:in `block in <main>'"]
p f.backtrace(2, 2) # start from item 2, take 2
#=> ["test.rb:6:in `level2'", "test.rb:10:in `level1'"]
p f.backtrace(1..3) # take items from 1 to 3
#=> ["test.rb:2:in `level3'", "test.rb:6:in `level2'", "test.rb:10:in `level1'"]

f.resume

# It is nil after the fiber is finished
f.backtrace
#=> nil

相關用法


注:本文由純淨天空篩選整理自ruby-lang.org大神的英文原創作品 Fiber.backtrace。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。