我正在尝试在Rails应用程序中使用ruby调试器。
为了显示堆栈跟踪,我需要在(rdb:1)提示符下键入什么命令?我已经尝试了backtrace
,但它只列出了最顶层的框架。
答案 0 :(得分:24)
http://apidock.com/ruby/Kernel/caller
caller(0) # Returns the stack trace, omitting 0 initial entry.
答案 1 :(得分:5)
这是debugger
中的错误。如果您使用的是Ruby> = 2.0,我建议您使用byebug。从版本1.5.0开始,问题就解决了。 This是debugger
回购邮件中的错误报告,这是在那里建议的解决方法:
pp caller.drop_while {|e| e[/ruby-debug|\(eval\)|debugger|\<internal:prelude\>/] }
答案 2 :(得分:1)
Pry gem确实有一个插件pry-stack_explorer
可以显示堆栈
示例:在帧之间移动
[8] pry(J)> show-stack
Showing all accessible frames in stack:
--
=> #0 [method] c <Object#c()>
#1 [block] block in b <Object#b()>
#2 [method] b <Object#b()>
#3 [method] alphabet <Object#alphabet(y)>
#4 [class] <class:J>
#5 [block] block in <main>
#6 [eval] <main>
#7 [top] <main>
[9] pry(J)> frame 3
Frame number: 3/7
Frame type: method
From: /Users/john/ruby/projects/pry-stack_explorer/examples/example.rb @ line 10 in Object#alphabet:
5:
6: require 'pry-stack_explorer'
7:
8: def alphabet(y)
9: x = 20
=> 10: b
11: end
12:
13: def b
14: x = 30
15: proc {
[10] pry(J)> x
=> 20
此外,它还有很多ruby调试器缺少的其他功能。所以我建议你试试pry
&amp;它的插件