Stack traces: Difference between revisions

(→‎{{header|Go}}: completed working program, simplified.)
(→‎{{header|Groovy}}: new solution)
Line 591:
(227 bytes)
</pre>
 
=={{header|Groovy}}==
Solution:
<lang groovy>def rawTrace = { Thread.currentThread().stackTrace }</lang>
 
Test: (demonstrates, among other things, continued execution after generating stack trace)
<lang groovy>def trace = rawTrace().collect {
def props = it.properties
def keys = (it.properties.keySet() - (new Object().properties.keySet()))
props.findAll{ k, v -> k in keys }
}
 
def propNames = trace[0].keySet().sort()
def propWidths = propNames.collect { name -> [name, trace.collect{ it[name].toString() }].flatten()*.size().max() }
 
propNames.eachWithIndex{ name, i -> printf("%-${propWidths[i]}s ", name) }; println ''
propWidths.each{ width -> print('-' * width + ' ') }; println ''
trace.each {
propNames.eachWithIndex{ name, i -> printf("%-${propWidths[i]}s ", it[name].toString()) }; println ''
}</lang>
 
Output:
<pre style="height:45ex;overflow:scroll;">className fileName lineNumber methodName nativeMethod
----------------------------------------------------------------- --------------------------------- ---------- ------------------------------- ------------
java.lang.Thread Thread.java 1479 getStackTrace false
sun.reflect.NativeMethodAccessorImpl NativeMethodAccessorImpl.java -2 invoke0 true
sun.reflect.NativeMethodAccessorImpl NativeMethodAccessorImpl.java 39 invoke false
sun.reflect.DelegatingMethodAccessorImpl DelegatingMethodAccessorImpl.java 25 invoke false
java.lang.reflect.Method Method.java 597 invoke false
org.codehaus.groovy.reflection.CachedMethod CachedMethod.java 90 invoke false
groovy.lang.MetaMethod MetaMethod.java 233 doMethodInvoke false
groovy.lang.MetaClassImpl$GetBeanMethodMetaProperty MetaClassImpl.java 3465 getProperty false
org.codehaus.groovy.runtime.callsite.GetEffectivePojoPropertySite GetEffectivePojoPropertySite.java 61 getProperty false
org.codehaus.groovy.runtime.callsite.AbstractCallSite AbstractCallSite.java 227 callGetProperty false
ConsoleScript38$_run_closure1 ConsoleScript38 1 doCall false
sun.reflect.NativeMethodAccessorImpl NativeMethodAccessorImpl.java -2 invoke0 true
sun.reflect.NativeMethodAccessorImpl NativeMethodAccessorImpl.java 39 invoke false
sun.reflect.DelegatingMethodAccessorImpl DelegatingMethodAccessorImpl.java 25 invoke false
java.lang.reflect.Method Method.java 597 invoke false
org.codehaus.groovy.reflection.CachedMethod CachedMethod.java 90 invoke false
groovy.lang.MetaMethod MetaMethod.java 233 doMethodInvoke false
org.codehaus.groovy.runtime.metaclass.ClosureMetaClass ClosureMetaClass.java 272 invokeMethod false
groovy.lang.MetaClassImpl MetaClassImpl.java 885 invokeMethod false
org.codehaus.groovy.runtime.callsite.PogoMetaClassSite PogoMetaClassSite.java 66 callCurrent false
org.codehaus.groovy.runtime.callsite.CallSiteArray CallSiteArray.java 46 defaultCallCurrent false
org.codehaus.groovy.runtime.callsite.AbstractCallSite AbstractCallSite.java 133 callCurrent false
org.codehaus.groovy.runtime.callsite.AbstractCallSite AbstractCallSite.java 141 callCurrent false
ConsoleScript38$_run_closure1 ConsoleScript38 -1 doCall false
sun.reflect.NativeMethodAccessorImpl NativeMethodAccessorImpl.java -2 invoke0 true
sun.reflect.NativeMethodAccessorImpl NativeMethodAccessorImpl.java 39 invoke false
sun.reflect.DelegatingMethodAccessorImpl DelegatingMethodAccessorImpl.java 25 invoke false
java.lang.reflect.Method Method.java 597 invoke false
org.codehaus.groovy.reflection.CachedMethod CachedMethod.java 90 invoke false
groovy.lang.MetaMethod MetaMethod.java 233 doMethodInvoke false
org.codehaus.groovy.runtime.metaclass.ClosureMetaClass ClosureMetaClass.java 272 invokeMethod false
groovy.lang.MetaClassImpl MetaClassImpl.java 885 invokeMethod false
org.codehaus.groovy.runtime.callsite.PogoMetaClassSite PogoMetaClassSite.java 39 call false
org.codehaus.groovy.runtime.callsite.CallSiteArray CallSiteArray.java 42 defaultCall false
org.codehaus.groovy.runtime.callsite.AbstractCallSite AbstractCallSite.java 108 call false
org.codehaus.groovy.runtime.callsite.AbstractCallSite AbstractCallSite.java 112 call false
ConsoleScript38 ConsoleScript38 3 run false
groovy.lang.GroovyShell GroovyShell.java 266 runScriptOrMainOrTestOrRunnable false
groovy.lang.GroovyShell GroovyShell.java 517 run false
groovy.lang.GroovyShell GroovyShell.java 172 run false
groovy.lang.GroovyShell$run null -1 call false
groovy.ui.Console$_runScriptImpl_closure16 Console.groovy 910 doCall false
sun.reflect.GeneratedMethodAccessor232 null -1 invoke false
sun.reflect.DelegatingMethodAccessorImpl DelegatingMethodAccessorImpl.java 25 invoke false
java.lang.reflect.Method Method.java 597 invoke false
org.codehaus.groovy.reflection.CachedMethod CachedMethod.java 90 invoke false
groovy.lang.MetaMethod MetaMethod.java 233 doMethodInvoke false
org.codehaus.groovy.runtime.metaclass.ClosureMetaClass ClosureMetaClass.java 272 invokeMethod false
groovy.lang.MetaClassImpl MetaClassImpl.java 885 invokeMethod false
org.codehaus.groovy.runtime.callsite.PogoMetaClassSite PogoMetaClassSite.java 66 callCurrent false
org.codehaus.groovy.runtime.callsite.AbstractCallSite AbstractCallSite.java 141 callCurrent false
groovy.ui.Console$_runScriptImpl_closure16 Console.groovy -1 doCall false
sun.reflect.GeneratedMethodAccessor231 null -1 invoke false
sun.reflect.DelegatingMethodAccessorImpl DelegatingMethodAccessorImpl.java 25 invoke false
java.lang.reflect.Method Method.java 597 invoke false
org.codehaus.groovy.reflection.CachedMethod CachedMethod.java 90 invoke false
groovy.lang.MetaMethod MetaMethod.java 233 doMethodInvoke false
org.codehaus.groovy.runtime.metaclass.ClosureMetaClass ClosureMetaClass.java 272 invokeMethod false
groovy.lang.MetaClassImpl MetaClassImpl.java 885 invokeMethod false
groovy.lang.Closure Closure.java 405 call false
groovy.lang.Closure Closure.java 399 call false
groovy.lang.Closure Closure.java 483 run false
java.lang.Thread Thread.java 662 run false</pre>
 
==Icon and {{header|Unicon}}==
Anonymous user