2010-09-22 6 views
10

पूर्ण स्टैक ट्रेस प्रिंट करने के लिए स्कैला दुभाषिया (एसबीटी के माध्यम से शुरू) को मजबूर करने का कोई तरीका है। डिफ़ॉल्ट रूप से, कम से कम 10 लाइनों प्रदर्शित होते हैं:
दुभाषिया को पूर्ण स्टैक ट्रेस दिखाने के लिए कैसे मजबूर करें?

scala> new CacheMonitoringClient 
javax.management.InstanceNotFoundException: com.bea:Name=DomainRuntimeService,Type=weblogic.management.beanservers.domainrun 
time.DomainRuntimeServiceMBean 
     at weblogic.rjvm.ResponseImpl.unmarshalReturn(ResponseImpl.java:195) 
     at weblogic.rmi.internal.BasicRemoteRef.invoke(BasicRemoteRef.java:224) 
     at javax.management.remote.rmi.RMIConnectionImpl_921_WLStub.getAttribute(Unknown Source) 
     at weblogic.management.remote.common.RMIConnectionWrapper$11.run(ClientProviderBase.java:498) 
     at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:363) 
     at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:147) 
     at weblogic.security.Security.runAs(Security.java:61) 
     at weblogic.management.remote.common.RMIConnectionWrapper.getAttribute(ClientProviderBas... 

एक समाधान मैं try { new CacheMonitoringClient } catch { case ex => ex.printStackTrace} उपयोग कर रहा हूँ (स्पष्ट रूप से कॉल कि अपवाद मैं में दिलचस्पी रखता हूँ फेंक लपेटकर) के रूप में, लेकिन वह वास्तव में बदसूरत ...

उत्तर

17

उपयोग lastException तुम सिर्फ एक बात चाहते हैं:

scala> 1/0 
java.lang.ArithmeticException:/by zero 
    at .<init>(<console>:12) 
    at .<clinit>(<console>) 
    at RequestResult$.<init>(<console>:9) 
    at RequestResult$.<clinit>(<console>) 
    at RequestResult$scala_repl_result(<console>) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at scala.tools.nsc.Interpreter$Request$$anonfun$loadAndRun$1$$anonfun$apply$18.apply(Interpreter.scala:981) 
    at scala.tools.nsc.Interpreter$Request$$anonfun$loadAndRun$1$$anonfun$apply$18.apply(Interpreter.scala:981) 
    at scala.util.control.Exception$Catch.apply(Exception.scala:79) 
    at scal... 
scala> lastException.printStackTrace 
java.lang.ArithmeticException:/by zero 
    at line101$object$$iw$$iw$$iw$$iw$$iw$$iw$.<init>(<console>:12) 
    at line101$object$$iw$$iw$$iw$$iw$$iw$$iw$.<clinit>(<console>) 
    at RequestResult$line101$object$.<init>(<console>:9) 
    at RequestResult$line101$object$.<clinit>(<console>) 
    at RequestResult$line101$object.scala_repl_result(<console>) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at scala.tools.nsc.Interpreter$Request$$anonfun$loadAndRun$1$$anonfun$apply$18.apply(Interpreter.scala:981) 
    at scala.tools.nsc.Interpreter$Request$$anonfun$loadAndRun$1$$anonfun$apply$18.apply(Interpreter.scala:981) 
    at scala.util.control.Exception$Catch.apply(Exception.scala:79) 
    at scala.tools.nsc.Interpreter$Request$$anonfun$loadAndRun$1.apply(Interpreter.scala:980) 
    at scala.tools.nsc.Interpreter$Request$$anonfun$loadAndRun$1.apply(Interpreter.scala:980) 
    at scala.util.control.Exception$Catch.apply(Exception.scala:79) 
    at scala.tools.nsc.Interpreter$Request.loadAndRun(Interpreter.scala:979) 
    at scala.tools.nsc.Interpreter.loadAndRunReq$1(Interpreter.scala:578) 
    at scala.tools.nsc.Interpreter.interpret(Interpreter.scala:597) 
    at scala.tools.nsc.Interpreter.interpret(Interpreter.scala:575) 
    at scala.tools.nsc.InterpreterLoop.reallyInterpret$1(InterpreterLoop.scala:471) 
    at scala.tools.nsc.InterpreterLoop.interpretStartingWith(InterpreterLoop.scala:514) 
    at scala.tools.nsc.InterpreterLoop.command(InterpreterLoop.scala:361) 
    at scala.tools.nsc.InterpreterLoop.processLine$1(InterpreterLoop.scala:242) 
    at scala.tools.nsc.InterpreterLoop.repl(InterpreterLoop.scala:248) 
    at scala.tools.nsc.InterpreterLoop.main(InterpreterLoop.scala:558) 
    at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:72) 
    at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala) 

या 0 करने के लिए settings.maxPrintString निर्धारित करते हैं, कि हालांकि बदल जाएगा कैसे सामान्य परिणाम भी प्रकाशित होते हैं।

scala> settings.maxPrintString = 0 

scala> 1 /0 
java.lang.ArithmeticException:/by zero 
    at .<init>(<console>:12) 
    at .<clinit>(<console>) 
    at RequestResult$.<init>(<console>:9) 
    at RequestResult$.<clinit>(<console>) 
    at RequestResult$scala_repl_result(<console>) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at scala.tools.nsc.Interpreter$Request$$anonfun$loadAndRun$1$$anonfun$apply$18.apply(Interpreter.scala:981) 
    at scala.tools.nsc.Interpreter$Request$$anonfun$loadAndRun$1$$anonfun$apply$18.apply(Interpreter.scala:981) 
    at scala.util.control.Exception$Catch.apply(Exception.scala:79) 
    at scala.tools.nsc.Interpreter$Request$$anonfun$loadAndRun$1.apply(Interpreter.scala:980) 
    at scala.tools.nsc.Interpreter$Request$$anonfun$loadAndRun$1.apply(Interpreter.scala:980) 
    at scala.util.control.Exception$Catch.apply(Exception.scala:79) 
    at scala.tools.nsc.Interpreter$Request.loadAndRun(Interpreter.scala:979) 
    at scala.tools.nsc.Interpreter.loadAndRunReq$1(Interpreter.scala:578) 
    at scala.tools.nsc.Interpreter.interpret(Interpreter.scala:597) 
    at scala.tools.nsc.Interpreter.interpret(Interpreter.scala:575) 
    at scala.tools.nsc.InterpreterLoop.reallyInterpret$1(InterpreterLoop.scala:471) 
    at scala.tools.nsc.InterpreterLoop.interpretStartingWith(InterpreterLoop.scala:514) 
    at scala.tools.nsc.InterpreterLoop.command(InterpreterLoop.scala:361) 
    at scala.tools.nsc.InterpreterLoop.processLine$1(InterpreterLoop.scala:242) 
    at scala.tools.nsc.InterpreterLoop.repl(InterpreterLoop.scala:248) 
    at scala.tools.nsc.InterpreterLoop.main(InterpreterLoop.scala:558) 
    at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:72) 
    at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala) 
+1

+1, क्या ये आरईपीएल टिप्स और चाल कहीं दस्तावेज हैं? – missingfaktor

+0

@Missing मेलिंग सूचियों और आईआरसी पर पल्प पर ध्यान देना जारी रखें, और वह कभी-कभी लागू होने वाली कुछ नई चाल दिखाएगा। इसके अलावा, बस '' दबाएं और देखें कि वहां क्या है, देखें कि कौन सी विधियां लागू की गई हैं, पावर मोड पर जाएं और दोहराना आदि। –

0

आप कंसोल प्रवेश करने से पहले एसबीटी में

trace on 

की कोशिश की है? चालू है, लेकिन शायद यह आपके मामले में अधिलेखित किया जा रहा है।

+0

एसबीटी 0.7.4 के खिलाफ प्रयास किया। ट्रेस ऑन/ऑफ के साथ कोई अंतर नहीं - दोनों मामलों में, स्टैक ट्रेस प्रदर्शित और कट किया जाता है। –

+0

हां, बस इसे स्वयं करने की कोशिश की (पहले स्थापित करना था)। ट्रेस विकल्प का भी प्रयास किया लेकिन इसमें कोई फर्क नहीं पड़ता। लाल हेरिंग के लिए खेद है। – Synesso

+0

मुझे नोट है कि आरईपीएल एसबीटी संदर्भ के बाहर अपवादों को भी मिटा देगा, इसलिए यह एसबीटी ऐसा नहीं कर सकता है। – Synesso

संबंधित मुद्दे