如何在Rails 3.2中找到"SystemStackError(堆栈级别太深)"的来源

bar*_*can 8 ruby debugging ruby-on-rails

我从Rails 3.0迁移到3.2.

我尝试显示页面时出错,只有这个小堆栈跟踪:

    SystemStackError in UserController#show

    stack level too deep
    SystemStackError (stack level too deep):
      activesupport (3.2.1) lib/active_support/callbacks.rb:415


      Rendered /home/barbacan/.rvm/gems/ruby-1.9.2-head/gems/actionpack-3.2.1/lib/action_dispatch/middleware/templates/rescues/_trace.erb (55.3ms)
      Rendered /home/barbacan/.rvm/gems/ruby-1.9.2-head/gems/actionpack-3.2.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (4.0ms)
      Rendered /home/barbacan/.rvm/gems/ruby-1.9.2-head/gems/actionpack-3.2.1/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (61.4ms)
Run Code Online (Sandbox Code Playgroud)

日志不详细.

回调中会出现此问题:它是动态代码,并且很难调试.

您是否知道有助于我调试和查找此问题根源的工具或方法?

谢谢!

编辑:

在Ruby/RoR中,有一种方法可以列出所有被称为列表的方法吗?

Nic*_*ick 4

您可以尝试在http://railscasts.com/episodes/280-pry-with-rails上使用Pry和railscast ,然后您可以在可能的位置设置断点并手动单步执行。

  • 如果他想使用 pry,他需要 [pry-nav](https://github.com/nixme/pry-nav) 插件:) 我还推荐 [pry-stack_explorer](https://github.com/pry-nav)。 com/pry/pry-stack_explorer) 如果他想导航调用堆栈 (4认同)