पर एक स्टैकट्रैक कैसे जोड़ सकता हूं डीबगिंग प्रिंटआउट से स्टैकट्रैक प्रिंट करने का सबसे आसान तरीका क्या है? अक्सर परीक्षण के दौरान आप एक डीबग संदेश को उत्तेजित करने वाली स्थिति तक पहुंचने वाले कॉलस्टैक को जानना चाहते हैं।मैं जावा में अपने डिबगिंग प्रिंटआउट
उत्तर
आपको कोशिश-पकड़ ब्लॉक में अपवाद को पकड़ना चाहिए।
e.getStackTrace();
जो स्टैकट्रेस एलिमेंट [] देता है जिसे आप समझ सकते हैं।
इसके अलावा:
e.printStackTrace()
होगा ... स्टैकट्रेस मुद्रित करें।
बस एक मनमाना अपवाद बनाने के लिए काम कर देता है मुझे:
System.out.println("Oops, the bad thing happened");
new IllegalStateException().printStackTrace();
आपको जूस चाहिए Thread.getStackTrace() का उपयोग नहीं करते हैं। – jjnguy
मेरा मानना है कि इस विधि से कुछ आईडीई जैसे इंटेलिजे में चेतावनी होगी, क्योंकि आप अपवाद बना रहे हैं लेकिन इसे फेंक नहीं रहे हैं। मैं थ्रेड.getस्टैकट्रेस() विधि की अनुशंसा करता हूं जिसमें एक ही तर्क है लेकिन यह डेवलपर से छिपा हुआ है। –
Thread.dumpStack() आसान है अगर आप इसे stderr पर भेजना चाहते हैं (स्टैक ट्रेस तत्वों पर स्वयं लूप को सहेजता है)। –
साथ ही @jjnguy क्या कहा के रूप में, यदि आप एक अपवाद नहीं है, आप भी Thread.getStackTrace() कॉल कर सकते हैं।
आप एक स्ट्रिंग आप यह कर सकते हैं में स्टैक ट्रेस सहेजना चाहते हैं;
String exception = "";
for (StackTraceElement element : e.getStackTrace())
exception += element.toString() + "\n";
जहां ई जाहिर है, एक अपवाद है।
इसके अलावा, यह एक डीबग के लिए एक स्टैक ट्रेस पाने के लिए अपने स्वयं के अपवाद को स्वत: उत्पन्न करने के लिए बहुत अजीब लगता है। ग्रहण प्राप्त करें और इसका डीबग मोड का उपयोग करें, यह वास्तव में कमाल है।
क्या कोई भी e.getCause() के माध्यम से कदम या पुनर्संरचना नहीं कर सकता है, और उन सभी के लिए स्टैक निशान भी प्राप्त करना चाहिए? – slim
मुझे विश्वास नहीं है कि ऐसा कोई कारण है जब आप इसे ऐसा करते हैं। – Chris
एकाधिक concatenations के लिए 'स्ट्रिंग' के बजाय' स्ट्रिंगबिल्डर 'का उपयोग करें। Stdout/stderr का उपयोग न करने के लिए – minipif
आप log4j
Exception e = new Exception();
log.error("error here", e);
उपयोग कर रहे हैं अपने लॉग में स्टैकट्रेस प्रिंट होगा।
+1 –
सिर्फ इसलिए कि मैं इसे अपने आप की जरूरत:।
के रूप में जवाब How do I find the caller of a method using stacktrace or reflection? से प्रेरित है, तो आप कॉल का उपयोग कर ढेर
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace()
तो फिर तुम पर कार्रवाई और प्रिंट/log जो कुछ भी आप में रुचि रखते हैं प्राप्त कर सकते हैं और अधिक काम Thread.dumpStack()
का उपयोग करने से, लेकिन अधिक लचीला।
बस stderr करने के लिए वर्तमान स्टैक ट्रेस मुद्रित करने के लिए, आप कॉल कर सकते हैं:
Thread.dumpStack();
जो अपने आप में सिर्फ कॉल:
new Exception("Stack trace").printStackTrace();
उत्पादन करने के लिए करने के लिए stdout बल्कि stderr से, के लिए System.out
पारित printStackTrace()
:
new Exception("Stack trace").printStackTrace(System.out);
- 1. लिनक्स-कर्नेल डीबग प्रिंटआउट?
- 2. जावा डिबगिंग - चर
- 3. मैट्रिक्स प्रिंटआउट की चौड़ाई बढ़ाएं
- 4. जावा डिबगिंग: स्रोत नहीं मिला
- 5. क्रॉस-महाद्वीप रिमोट जावा डिबगिंग
- 6. जावा एप्लिकेशन में डिबगिंग के लिए उपकरण
- 7. जावा वास्तविक समय डिबगिंग (गेमिंग)
- 8. मैं जावा में अपने ढेर में क्या देख सकता हूं?
- 9. विजुअल स्टूडियो में डिबगिंग करते समय मैं अपने एप्लिकेशन थ्रेड कैसे देख सकता हूं?
- 10. डिबगिंग
- 11. मैं अपने जावा एसई प्रोजेक्ट में javax.validation कैसे आयात करूं?
- 12. मोबाइल ब्राउज़र में डिबगिंग?
- 13. कदम में/डिबगिंग इंटरफ़ेस Implementer
- 14. अपने जावा चालक
- 15. PHP में, मैं अपने सर्वर
- 16. मैं आसिया में अपने एपीआई
- 17. मुझे अपने जावा प्रोजेक्ट्स
- 18. जावा अपने इंटरफेस
- 19. डिबगिंग ग्रहण
- 20. मैं अपने प्रोग्राम
- 21. मैं मैं अपने स्ट्रिंग
- 22. डिबगिंग SIGABRT:
- 23. मैं अपने डेस्कटॉप एप्लिकेशन
- 24. Google क्रोम में सीएसएस डिबगिंग
- 25. क्रोम में jQuery इवेंट डिबगिंग
- 26. क्या मैं डिबगिंग मोड में कोड/मान बदल सकता हूं?
- 27. क्यूटी निर्माता में उत्पादन डिबगिंग
- 28. Xna डिबगिंग
- 29. डिबगिंग आउटफमेमरीएसेप्शन
- 30. मैं कैसे अपने ItemsSource ObservableCollection
नकारात्मकता यह है कि डंपस्टैक() केवल stderr पर जाता है, और आप इसे कहीं और नहीं भेज सकते जैसे आप अपवाद या थ्रेड.getStackTrace() के साथ कर सकते हैं। –
लॉगिंग का उपयोग करें। Stdout/stderr को प्रिंट करना केवल ओएस उपयोगिताओं और "हैलो वर्ल्ड" ऐप्स द्वारा किया जाना चाहिए। –