當我的jruby程序意外提高並給我一個堆棧跟蹤時,它幾乎是無法理解的。它顯然來自內部解釋器的東西,使我很難找出真正的實際程序的實際調用堆棧是什麼。有沒有辦法在jruby中獲得合理的堆棧跟蹤?
之類的東西(只是一個節選):
from CachingCallSite.java:326:in `cacheAndCall'
from CachingCallSite.java:170:in `call'
from CallOneArgNode.java:57:in `interpret'
from LocalAsgnNode.java:123:in `interpret'
from NewlineNode.java:105:in `interpret'
from BlockNode.java:71:in `interpret'
from RescueNode.java:222:in `executeBody'
from RescueNode.java:117:in `interpret'
from EnsureNode.java:96:in `interpret'
from ASTInterpreter.java:74:in `INTERPRET_METHOD'
from InterpretedMethod.java:161:in `call'
from DefaultMethod.java:178:in `call'
from CachingCallSite.java:316:in `cacheAndCall'
而且它不只是像這些都是從我的實際程序穿插調用棧線 - 我的實際程序調用堆棧似乎並沒有出現在棧跟蹤。使它不那麼有用,因爲它的目的是幫助我找出實際提出異常的原因。
我想我記得在過去的某個時間點,給出一些命令行參數來給出與調試或JIT有關的jruby,這會導致一個合理的堆棧跟蹤(可能以JIT性能爲代價或者其他的東西?)。
但試圖再次找到這個,我沒有運氣,花了相當多的時間試圖找到jruby文檔,谷歌搜索等,沒有找到任何命令行參數導致合理的堆棧跟蹤運氣。
有人知道嗎?
我只是想發佈'rescue NativeException;提高; 「解決方案」,但它似乎從我的鳴叫已經得到它自己的翅膀... – Theo
如何執行jruby應用程序時設置這些類型的java屬性?謝謝! – jrochkind
@jrochkind https://github.com/jruby/jruby/wiki/ConfiguringJRuby有一個很好的概述(看大代碼部分的頂部) – Shepmaster