2012-08-09 13 views
7

मैं एक तरह से एक स्टैक ट्रेस पाने के लिए जब मैं एक निश्चित ब्रेकपाइंट पर हूँ के लिए देख रहा हूँ। क्या यह संभव है? आदर्श रूप से एप्लिकेशन को क्रैश किए बिना और कोड को संशोधित किए बिना। मैंने एंड्रॉइड डीबगर के साथ खेलने की कोशिश की लेकिन कुछ भी उपयोगी नहीं मिला।क्या मांग पर स्टैक ट्रेस प्रिंट करने का कोई तरीका है?

कारण यह है कि कभी कभी मैं कुछ कैसे आवेदन कोड में एक बिंदु पर आ नहीं कर रहा हूँ, इसलिए मैं अन्य सुझाव है कि मुझे विधि कॉल का पता लगाने में मदद मिलेगी के लिए खुला हूँ।

उत्तर

12

यह जावा में किया जा सकता है:

new Throwable().printStackTrace(); 

ग्रहण में, यदि आप Debug परिप्रेक्ष्य के Expressions ध्यान में रखते हुए कि कोड के साथ एक "अभिव्यक्ति" बनाने के लिए, यह वर्तमान स्टैक ट्रेस (यानी की स्टैकट्रेस प्रिंट होगा ब्रेकपाइंट अपने कोड Console ध्यान में रखते हुए पर बंद कर दिया)।

+0

धन्यवाद, आप भाव ध्यान में रखते हुए क्या मतलब है? ब्रेकपॉइंट के साथ लाइन पर एक कोड क्या रखा जाना चाहिए? मैंने कोशिश की, लेकिन कंसोल व्यू में और न ही लॉगकैट में कुछ भी दिखाई नहीं दिया। – JohnEye

+0

"भाव" को देखते हुए, "नई अभिव्यक्ति जोड़ें" और कोड मैं प्रदान की पेस्ट (।; '' नई फेंकने योग्य() printStackTrace()) पर क्लिक करें। 'एंटर' दबाएं। "कंसोल" दृश्य पर स्विच करें और आपको एक स्टैकट्रैक देखना चाहिए। यह वेनिला ग्रहण जूनो पर मेरे लिए काम करता है, बस एक '(String [])' विधि के साथ सरल जावा अनुप्रयोग डिबगिंग। – npe

+0

यकीन है कि, ओह, मैं सिर्फ घने किया जा रहा था :-) यह मेरे लिए हुआ होना चाहिए था कि मैं जाने के लिए कोड आप पोस्ट पर अमल करना चाहते हैं। बहुत बहुत धन्यवाद, एक आकर्षण की तरह काम करता है। – JohnEye

4
Log.e("AppName", "Debug exception", new Exception()); 
2

सबसे आसान तरीका है, एक अपवाद फेंक तुरंत उसे पकड़ने और printStackTrace() उपयोग करने के लिए है।

आप Thread.currentThread().getStackTrace() भी कोशिश कर सकते हैं जो आपको StackTraceElement[] देता है यदि आप printStackTrace() करता है तो पाठ के प्रतिनिधित्व के अलावा आपको कुछ और करना चाहते हैं।

+2

आपको इसे फेंकने की ज़रूरत नहीं है। मेरा उत्तर ;-) – npe

+0

बहुत सच देखें, मैं हमेशा कि मत भूलना: डी – f1sh

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