2008-11-24 14 views

उत्तर

4

आप एक जावा प्रक्रिया के लिए डीबगर देते हैं और एक ब्रेकपाइंट सेट जब एक विशिष्ट अपवाद प्राप्त होता है सकते हैं। क्या यही तुम्हें चाहिए था?

http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/jdb.html

एक अपवाद तब होता है जब जो के लिए वहाँ एक पकड़ने बयान कहीं भी ऊपर एक जावा प्रोग्राम का ढेर नहीं है से, जावा क्रम सामान्य रूप से एक अपवाद का पता लगाने और बाहर निकलता है उदासीनता। जब jdb के तहत चल रहा है, तथापि, कि अपवाद एक गैर वसूली योग्य ब्रेकप्वाइंट के रूप में इलाज है, और jdb हमलावर अनुदेश पर रुकती है। यदि यह वर्ग जी विकल्प के साथ संकलित किया गया था, उदाहरण और स्थानीय चर अपवाद का कारण निर्धारित करने के लिए मुद्रित किया जा सकता है।

इस प्रकार के ब्रेकपॉइंट्स को किसी भी आईडीई, जैसे एक्लिप्स के साथ सेट किया जा सकता है। ग्रहण का उपयोग करके आप एक विशिष्ट अपवाद प्रकार पर ब्रेकपॉइंट भी सेट कर सकते हैं, भले ही यह सामान्य कोड में पकड़ा गया हो।

यदि आपके पास बहु-थ्रेडेड सर्वर चलने जैसा कुछ है, और क्लाइंट की सेवा करने वाले थ्रेडों में से एक एक अनचाहे अपवाद फेंकता है, तो आप डीबगर की जांच कर पाएंगे और देखेंगे कि क्या होता है। मुझे नहीं लगता कि यह उत्पादन के लिए कुछ है, लेकिन परीक्षण करते समय निश्चित रूप से मदद करता है।

आवेदन डीबगर से चलाने के लिए नहीं है, लेकिन यह तर्क के रूप में डिबग विकल्पों के साथ शुरू किया जा सकता:

-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=XXXX 

आवेदन सामान्य रूप से चलाता है, लेकिन में "व्याख्या" मोड स्विच जब एक ब्रेकपाइंट है JVM के कम से कम आधुनिक संस्करणों में हिट करें। तो प्रदर्शन प्रभावित नहीं है।

चेक अनुभाग के बारे में full-speed debugging for HotSpot VM

पूर्ण गति डिबगिंग

जावा हॉटस्पॉट वीएम अब पूर्ण गति डिबगिंग उपयोग करता है। वी एम के पिछले संस्करण में, जब डिबगिंग सक्षम है, तो कार्यक्रम केवल दुभाषिया का उपयोग कर मार डाला था। अब, हॉटस्पॉट प्रौद्योगिकी का पूरा प्रदर्शन लाभ, यहां तक ​​कि संकलित कोड के साथ कार्यक्रमों के लिए उपलब्ध है। बेहतर प्रदर्शन लंबे समय से चलने वाले प्रोग्रामों को अधिक आसानी से डीबग करने की अनुमति देता है। यह परीक्षण को पूर्ण गति पर आगे बढ़ने की अनुमति देता है। एक बार अपवाद होने पर, डीबगर कोड स्रोतों के लिए पूर्ण दृश्यता के साथ लॉन्च होता है।

+0

बात यह है कि अपने आवेदन समय की एक undeterminate अवधि के लिए चलेंगे है, और अगर यह एक अपवाद फेंक देते हैं, मैं डिबग करने के लिए करना चाहते हैं। बात यह है कि अगर मैं डीबगर में एप्लिकेशन चलाता हूं, तो प्रदर्शन खराब हो जाएगा। – Geo

+0

मैंने पूर्ण गति डीबगिंग पर जानकारी का विस्तार किया है। –

+0

हाय मारियो, ऐसा लगता है कि आपको jdb को चलने वाली प्रक्रिया से कनेक्ट करने का अनुभव है .. क्या आप यहां मेरे प्रश्न का उत्तर देने में सक्षम होंगे ..http: //stackoverflow.com/questions/28528325/attach-jdb-on-uncaught-exception ....धन्यवाद। – nave

4

जहाँ तक मुझे पता है, आपको एक आधिकारिक एपीआई के लिए जावा 7 के लिए इंतजार करना होगा - http://tech.puredanger.com/java7#jsr326 देखें।

इस बीच, आप अपना डेटा रखने के लिए अपवाद (बेस क्लास को प्रतिस्थापित कर सकते हैं, उपकरण के माध्यम से कोड इंजेक्ट कर सकते हैं) को प्रतिस्थापित कर सकते हैं। कृपया ध्यान दें कि क्लासलोडर नियमित रूप से क्लास नॉटफाउंड अपवाद को पकड़ता है और पकड़ता है (प्रत्येक नया पैकेज लोड होता है)। बेस कोड को संशोधित किए बिना आपको उस तरह का बहुत नियंत्रण होगा।

+0

हालांकि आम तौर पर कई शब्द हैं, जेएसआर 326 (AFAIK) पूछे गए प्रश्न को संबोधित नहीं करता है। इसके बजाय, यह जावा प्रोग्राम (हेप डंप, स्टैक निशान इत्यादि) से उत्पादित कलाकृतियों को पढ़ने के लिए मानक स्वरूप और उपकरण स्थापित करता है। मैं नहीं देखता कि यह वास्तव में पोस्ट-मॉर्टम को डीबग करने देगा। –

+0

@alex मैंने यह माना होगा कि "अधिक पोस्ट डिबगिंग पोस्ट" द्वारा चरडे का मतलब है कि जेवीएम मौत से पहले ढेर पर एक सटीक स्टैक ट्रेस तत्काल हो रहा है। आप सही हैं - यह वास्तव में सवाल का जवाब नहीं देता है। –

+0

शायद यह सिर्फ पायथन की तरह ही था, जहां आप बस ['आयात पीडीबी' कह सकते हैं; किसी भी अपवाद के बाद pdb.pm() '] (https://docs.python.org/2/library/pdb.html)। डीबगिंग के लिए बहुत उपयोगी है। –

4

मैं रीप्ले सॉल्यूशंस के लिए एक समाधान आर्किटेक्ट हूं। वे जावा अनुप्रयोगों के लिए "टाइम मशीन" प्रदान करते हैं। जब आप चल रहे हों तो आप एक एप्लिकेशन रिकॉर्ड कर सकते हैं (मान लीजिए, एक क्यूए पर्यावरण में), फिर अपनी विकास मशीन पर रिकॉर्डिंग को फिर से चलाएं। आपको डेटाबेस, कॉन्फ़िगरेशन इत्यादि तक पहुंच की आवश्यकता नहीं है। आपको केवल अपने रीप्लेडिएक्टर समाधान की आवश्यकता है और आप अपनी आईडीई के अनुकूल सीमाओं में समस्या को डीबग कर सकते हैं। समस्याएं जिन्हें पुन: चलाया जा सकता है कॉन्फ़िगरेशन समस्याओं से, थ्रेडिंग समस्याओं के लिए डेटाबेस अपवाद। एक नज़र डालें:

http://www.replaysolutions.com

+0

जैसे ही मैं काम से वापस आऊंगा, मुझे एक नज़र आएगी। – Geo

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