相关疑难解决方法(0)

如何从SystemStackError中获取回溯:堆栈级别太深?

在编写ruby时,我常常难以调试无限递归.有没有办法从a SystemStackError中找到一个回溯来找出,究竟是无限循环发生在哪里?

给定一些方法foo,barbaz在循环中相互调用:

def foo
  bar
end

def bar
  baz
end

def baz
  foo
end

foo
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,我只是收到消息test.rb:6: stack level too deep (SystemStackError).至少得到堆栈的最后100行是有用的,所以我可以立即看到这是一个循环foo,bar并且baz,像这样:

test.rb:6: stack level too deep (SystemStackError)
  test.rb:2:in `foo'
  test.rb:10:in `baz'
  test.rb:6:in `bar'
  test.rb:2:in `foo'
  test.rb:10:in `baz'
  test.rb:6:in `bar'
  test.rb:2:in `foo'
  [...]
Run Code Online (Sandbox Code Playgroud)

有没有办法实现这个目标?

编辑:

从下面的答案可以看出,Rubinius可以做到.不幸的是,一些rubinius错误阻止我使用我想要调试的软件.所以准确的问题是:

如何获得MRI(默认红宝石)1.9的回溯?

ruby

48
推荐指数
6
解决办法
1万
查看次数

Heroku App启动超时

我有一个相当大的,2.3升级到Rails 3应用程序,这足够胖它没有通过Heroku的60秒启动门,因此它崩溃了.我已经做了很多工作来最小化Gems和初始化器中的加载时间,但是有一些随机过程是燃烧时间,我不确定它是什么.我可以用另一双眼睛.

这是带有config.ru,application.rb和environment.rb以及Gemfile的GIST.

https://gist.github.com/2026140

任何想法将不胜感激.

performance ruby-on-rails

5
推荐指数
2
解决办法
4510
查看次数

标签 统计

performance ×1

ruby ×1

ruby-on-rails ×1