[英]Ruby / byebug / binding.pry: How to step back?
我在binding.pry或byebug上鍵入next
,進入下一行。 我使用單step
執行程序。 如何退回一條線?
我一直在瀏覽文檔,沒有運氣。 幫助極大的贊賞。 謝謝。
使用ByeBug時無法退后。
妥協解決方案正在重新嘗試通過撬動執行先前的代碼。
例如,如果您停止了Controller的動作:
def index
list = Orders.for_user(current_user)
=> binding.pry
end
現在您想了解為什么list
空? -您可以運行:
> debug Orders.for_user(current_user)
並檢查那里發生了什么
為什么我們必須使用折衷方案? 問題在於,ruby環境無法在每個步驟上保持系統的整體狀態。 大概是因為您很可能仍將使用外部系統(例如通過API調用),這可能會更改其內部狀態,並且您無法自動“回滾”。
在此“備忘單”上沒有列出“后退”或“撤消步驟”命令。 我建議使用ctrl + c(x2),ctrl + d,將其放回您的容器中,然后再次擊中綁定撬。
您可以在binding.pry中使用上下方法
看這里:
Frame number: 0/64
From: /Users/johnmair/ruby/rails_projects/personal_site/app/controllers/posts_controller.rb @ line 7 PostsController#index:
5: def index
6: @posts = Post.all
=> 7: binding.pry
8: end
[1] pry(#<PostsController>)> show-stack
Showing all accessible frames in stack (65 in total):
--
=> #0 index <PostsController#index()>
#1 [method] send_action <ActionController::ImplicitRender#send_action(method, *args)>
#2 [method] process_action <AbstractController::Base#process_action(method_name, *args)>
#3 [method] process_action <ActionController::Rendering#process_action(*arg1)>
<... clipped ...>
[2] pry(#<PostsController>)> up
Frame number: 1/64
Frame type: method
From: /Users/johnmair/.rvm/gems/ruby-2.0.0-p0/gems/actionpack-3.2.8/lib/action_controller/metal/implicit_render.rb @ line 4 ActionController::ImplicitRender#send_action:
3: def send_action(method, *args)
=> 4: ret = super
5: default_render unless response_body
6: ret
7: end
[3] pry(#<PostsController>)>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.