Last active
December 15, 2015 02:09
-
-
Save headius/5184869 to your computer and use it in GitHub Desktop.
What a Ruby trace from JRuby looks like at the JVM level.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Completely transformed | |
====================== | |
ext-jruby-local ~/projects/jruby $ jruby -e "def foo; 1.times { bar }; end; def bar; eval 'baz'; end; def baz; class << self; raise; end; end; foo" | |
RuntimeError: No current exception | |
__singleton__ at -e:1 | |
baz at -e:1 | |
bar at (eval):1 | |
eval at org/jruby/RubyKernel.java:1067 | |
bar at -e:1 | |
foo at -e:1 | |
times at org/jruby/RubyFixnum.java:271 | |
foo at -e:1 | |
(root) at -e:1 | |
Partially transformed | |
===================== | |
ext-jruby-local ~/projects/jruby $ jruby -Xbacktrace.style=raw -e "def foo; 1.times { bar }; end; def bar; eval 'baz'; end; def baz; class << self; raise; end; end; foo" | |
RuntimeError: No current exception | |
getStackTrace at java/lang/Thread.java:1567 | |
getBacktraceData at org/jruby/runtime/backtrace/TraceType.java:171 | |
getBacktrace at org/jruby/runtime/backtrace/TraceType.java:39 | |
prepareBacktrace at org/jruby/RubyException.java:223 | |
preRaise at org/jruby/exceptions/RaiseException.java:214 | |
preRaise at org/jruby/exceptions/RaiseException.java:195 | |
<init> at org/jruby/exceptions/RaiseException.java:112 | |
raise at org/jruby/RubyKernel.java:955 | |
rbRaise at org/jruby/java/addons/KernelJavaAddons.java:45 | |
call at org/jruby/internal/runtime/methods/DynamicMethod.java:201 | |
call at org/jruby/internal/runtime/methods/DynamicMethod.java:197 | |
cacheAndCall at org/jruby/runtime/callsite/CachingCallSite.java:306 | |
call at org/jruby/runtime/callsite/CachingCallSite.java:136 | |
__singleton__ at -e:1 | |
__singleton__ at ruby/-e:1 | |
baz at -e:1 | |
baz at ruby/-e:1 | |
cacheAndCall at org/jruby/runtime/callsite/CachingCallSite.java:306 | |
call at org/jruby/runtime/callsite/CachingCallSite.java:136 | |
interpret at org/jruby/ast/VCallNode.java:88 | |
interpret at org/jruby/ast/NewlineNode.java:105 | |
interpret at org/jruby/ast/RootNode.java:129 | |
INTERPRET_EVAL at org/jruby/evaluator/ASTInterpreter.java:96 | |
evalWithBinding at org/jruby/evaluator/ASTInterpreter.java:185 | |
evalCommon at org/jruby/RubyKernel.java:1104 | |
eval19 at org/jruby/RubyKernel.java:1067 | |
call at org/jruby/internal/runtime/methods/DynamicMethod.java:209 | |
call at org/jruby/internal/runtime/methods/DynamicMethod.java:205 | |
cacheAndCall at org/jruby/runtime/callsite/CachingCallSite.java:326 | |
call at org/jruby/runtime/callsite/CachingCallSite.java:170 | |
bar at -e:1 | |
bar at ruby/-e:1 | |
cacheAndCall at org/jruby/runtime/callsite/CachingCallSite.java:306 | |
call at org/jruby/runtime/callsite/CachingCallSite.java:136 | |
foo at -e:1 | |
foo at ruby/-e:1 | |
yield at org/jruby/runtime/CompiledBlock19.java:137 | |
yield at org/jruby/runtime/Block.java:130 | |
times at org/jruby/RubyFixnum.java:271 | |
cacheAndCall at org/jruby/runtime/callsite/CachingCallSite.java:316 | |
callBlock at org/jruby/runtime/callsite/CachingCallSite.java:145 | |
callIter at org/jruby/runtime/callsite/CachingCallSite.java:154 | |
foo at -e:1 | |
foo at ruby/-e:1 | |
cacheAndCall at org/jruby/runtime/callsite/CachingCallSite.java:306 | |
call at org/jruby/runtime/callsite/CachingCallSite.java:136 | |
(root) at -e:1 | |
(root) at ruby/-e:1 | |
runScript at org/jruby/Ruby.java:816 | |
runScript at org/jruby/Ruby.java:809 | |
runNormally at org/jruby/Ruby.java:680 | |
runFromMain at org/jruby/Ruby.java:529 | |
doRunFromMain at org/jruby/Main.java:390 | |
internalRun at org/jruby/Main.java:279 | |
run at org/jruby/Main.java:221 | |
main at org/jruby/Main.java:201 | |
Original trace | |
============== | |
ext-jruby-local ~/projects/jruby $ jruby -e "def foo; 1.times { bar }; end; def bar; eval 'baz'; end; def baz; class << self; java.lang.Thread.dumpStack; end; end; foo" | |
java.lang.Exception: Stack trace | |
at java.lang.Thread.dumpStack(Thread.java:1342) | |
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) | |
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) | |
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) | |
at java.lang.reflect.Method.invoke(Method.java:601) | |
at org.jruby.javasupport.JavaMethod.invokeDirectWithExceptionHandling(JavaMethod.java:440) | |
at org.jruby.javasupport.JavaMethod.invokeStaticDirect(JavaMethod.java:362) | |
at org.jruby.java.invokers.StaticMethodInvoker.call(StaticMethodInvoker.java:50) | |
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:306) | |
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:136) | |
at ruby.__dash_e__.sclass_3$RUBY$__singleton__(-e:1) | |
at ruby.__dash_e__.method__2$RUBY$baz(-e:1) | |
at ruby$__dash_e__$method__2$RUBY$baz.call(ruby$__dash_e__$method__2$RUBY$baz) | |
at ruby$__dash_e__$method__2$RUBY$baz.call(ruby$__dash_e__$method__2$RUBY$baz) | |
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:306) | |
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:136) | |
at org.jruby.ast.VCallNode.interpret(VCallNode.java:88) | |
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105) | |
at org.jruby.ast.RootNode.interpret(RootNode.java:129) | |
at org.jruby.evaluator.ASTInterpreter.INTERPRET_EVAL(ASTInterpreter.java:96) | |
at org.jruby.evaluator.ASTInterpreter.evalWithBinding(ASTInterpreter.java:185) | |
at org.jruby.RubyKernel.evalCommon(RubyKernel.java:1104) | |
at org.jruby.RubyKernel.eval19(RubyKernel.java:1067) | |
at org.jruby.RubyKernel$INVOKER$s$0$3$eval19.call(RubyKernel$INVOKER$s$0$3$eval19.gen) | |
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:209) | |
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:205) | |
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326) | |
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170) | |
at ruby.__dash_e__.method__1$RUBY$bar(-e:1) | |
at ruby$__dash_e__$method__1$RUBY$bar.call(ruby$__dash_e__$method__1$RUBY$bar) | |
at ruby$__dash_e__$method__1$RUBY$bar.call(ruby$__dash_e__$method__1$RUBY$bar) | |
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:306) | |
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:136) | |
at ruby.__dash_e__.block_0$RUBY$foo(-e:1) | |
at ruby$__dash_e__$block_0$RUBY$foo.call(ruby$__dash_e__$block_0$RUBY$foo) | |
at org.jruby.runtime.CompiledBlock19.yield(CompiledBlock19.java:137) | |
at org.jruby.runtime.Block.yield(Block.java:130) | |
at org.jruby.RubyFixnum.times(RubyFixnum.java:271) | |
at org.jruby.RubyFixnum$INVOKER$i$0$0$times.call(RubyFixnum$INVOKER$i$0$0$times.gen) | |
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:316) | |
at org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:145) | |
at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:154) | |
at ruby.__dash_e__.method__0$RUBY$foo(-e:1) | |
at ruby$__dash_e__$method__0$RUBY$foo.call(ruby$__dash_e__$method__0$RUBY$foo) | |
at ruby$__dash_e__$method__0$RUBY$foo.call(ruby$__dash_e__$method__0$RUBY$foo) | |
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:306) | |
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:136) | |
at ruby.__dash_e__.__file__(-e:1) | |
at ruby.__dash_e__.load(-e) | |
at org.jruby.Ruby.runScript(Ruby.java:816) | |
at org.jruby.Ruby.runScript(Ruby.java:809) | |
at org.jruby.Ruby.runNormally(Ruby.java:680) | |
at org.jruby.Ruby.runFromMain(Ruby.java:529) | |
at org.jruby.Main.doRunFromMain(Main.java:390) | |
at org.jruby.Main.internalRun(Main.java:279) | |
at org.jruby.Main.run(Main.java:221) | |
at org.jruby.Main.main(Main.java:201) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment