如何使用Ruby调试器获取堆栈跟踪?

18

我正在尝试在Rails应用程序中使用Ruby调试器。

(rdb:1)提示符下,我需要输入哪个命令才能显示堆栈跟踪?我已经尝试过backtrace,但它只列出最顶层的框架。


在Rails应用程序中进行调试,请参考以下链接:https://dev59.com/ElnUa4cB1Zd3GeqPeNbf - dkulkarni
3个回答

36

8

这是一个debugger的错误。如果你使用的是Ruby >= 2.0,我建议你使用byebug。问题在1.5.0版本中得到解决。这里是在debugger存储库中的错误报告,并建议采用以下解决方法:

pp caller.drop_while {|e| e[/ruby-debug|\(eval\)|debugger|\<internal:prelude\>/] }

1

Pry宝石确实有一个插件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及其插件。

1
我按照 https://github.com/pry/pry/wiki/Setting-up-Rails-or-Heroku-to-use-Pry 上的步骤进行了操作,但没有起到帮助作用。show-stack 命令只会给我返回一个错误。 - spierepf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接