Ruby profiler堆栈级别太深错误
发布时间:2020-12-17 04:00:21 所属栏目:百科 来源:网络整理
导读:好像我总是在我的一个脚本上出现这个错误: /Users/amosng/.rvm/gems/ruby-1.9.3-p194/gems/ruby-prof-0.11.2/lib/ruby-prof/profile.rb:25: stack level too deep (SystemStackError) 有没有人遇到此错误?可能导致它的原因,以及我可以采取哪些措施来防止它
好像我总是在我的一个脚本上出现这个错误:
/Users/amosng/.rvm/gems/ruby-1.9.3-p194/gems/ruby-prof-0.11.2/lib/ruby-prof/profile.rb:25: stack level too deep (SystemStackError) 有没有人遇到此错误?可能导致它的原因,以及我可以采取哪些措施来防止它发生? 我使用命令运行我的ruby-prof脚本 ruby-prof --printer=graph --file=profile.txt scraper.rb -- "fall 2012" 编辑我在Mac OS X上,如果这很重要.不幸的是,做ulimit -s 64000似乎没什么帮助.这是ulimit -a给出的: $ulimit -a core file size (blocks,-c) 0 data seg size (kbytes,-d) unlimited file size (blocks,-f) unlimited max locked memory (kbytes,-l) unlimited max memory size (kbytes,-m) unlimited open files (-n) 256 pipe size (512 bytes,-p) 1 stack size (kbytes,-s) 64000 cpu time (seconds,-t) unlimited max user processes (-u) 709 virtual memory (kbytes,-v) unlimited 编辑2 Andrew Grimm的解决方案可以很好地防止ruby-prof崩溃,但是分析器似乎有自己的问题,因为我看到百分比占流程总时间的679.50%…… 解决方法
一个解决方法是
turn tail call optimization on.
以下是与TCO配合使用的示例,但在TCO关闭时不起作用. RubyVM::InstructionSequence.compile_option = { :tailcall_optimization => true,:trace_instruction => false } def countUpTo(current,final) puts current return nil if current == final countUpTo(current+1,final) end countUpTo(1,10_000) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |