2010-08-05 13 views
9

मैं जावा स्टैक ओवरफ्लो त्रुटि में भाग गया, लेकिन अपमानजनक रिकर्सिव कॉल इतना गहरा है, कि यह मुझे पूर्ण स्टैक ट्रेस नहीं देता है। यह केवल StackOverflow अपवाद के तरीकों की पहली 1024 लाइनों को डंप करता है।जावा अपवाद स्टैक सीमा की 1024 लाइनों से कैसे बचें

मैं पूर्ण स्टैक ट्रेस कैसे प्राप्त कर सकता हूं, ताकि मैं मूल कारण जान सकूं?

+2

नहीं एक जवाब, लेकिन यह भी breakpoints, प्रवेश, आदि के साथ डिबगिंग पर विचार – polygenelubricants

+1

मूल कारण पहले लाइनों में, बाकी एक ही दिखना चाहिए है। क्या आप इसे देखने के लिए स्टैकट्रैक पोस्ट करने का प्रयास कर सकते हैं? (शायद pastebin.com में या ऐसा कुछ?) – OscarRyz

+0

क्या आप किसी भी मौके से रिकर्सन का उपयोग कर रहे हैं? यदि ऐसा है, तो यह http://blogs.msdn.com/b/oldnewthing/archive/2009/01/07/9286576.aspx में सहायता करता है। SO पर संबंधित चर्चा देखें: http://stackoverflow.com/questions/951635/how-to-handle-stackoverflowerror-in-java –

उत्तर

1

आप स्टैक आकार को बदलने के लिए -एक्सएसएस का उपयोग कर सकते हैं, लेकिन यदि आपके पास असंबद्ध रिकर्सन है तो इससे मदद नहीं मिलेगी। ऐसा लगता है जैसे आपकी रोकथाम की स्थिति काम नहीं की जा सकती है।

+6

यदि कुछ भी, * कम * ढेर का आकार तो अपवाद जल्द ही होता है और स्टैक्टास लाइनों के भीतर फिट बैठता है! :-) –

1

मैन्युअल रूप से स्टैक मुद्रित करें, e.printStackTrace() पर लगाई गई सीमा लागू नहीं होती है जब आप एक लेखक प्रदान करते हैं (मुझे उस पर उद्धरण देने की आवश्यकता हो सकती है लेकिन मैंने कभी भी इस विधि का उपयोग करते समय इसे फसल नहीं किया है)।

/** 
* Produces a Java-like stack trace string. 
* 
* @param e 
* @return 
*/ 
public static String exceptionStack(Throwable e) { 
    final Writer result = new StringWriter(); 
    final PrintWriter printWriter = new PrintWriter(result); 
    e.printStackTrace(printWriter); 
    return result.toString(); 
} 
+0

काम नहीं करता है। मेरे पास केवल 1024 लाइनें हैं, यह मूल कारण नहीं दिखाती है। – Pacerier

8

स्विच -XX:MaxJavaStackTraceDepth बड़े और छोटे स्टैक ट्रेस लंबाई अनुमति देता है:

यहाँ कुछ आसान कोड है कि मैं पूरी निशान पाने के लिए रोजगार है। असीमित लंबाई के लिए इसे -1 पर सेट करें। उदा .:

-XX:MaxJavaStackTraceDepth=-1 
संबंधित मुद्दे