2009-05-15 25 views
53

वर्तमान में, मेरे पास एकमात्र जानकारी ब्राउज़र की स्थिति-बार में एक-पंक्ति त्रुटि संदेश है।आप जावा एप्लेट्स को कैसे डिबग करते हैं?

क्या आप जानते हैं कि उदाहरण के लिए मैं एक स्टैक-ट्रेस कैसे प्राप्त कर सकता हूं?

उत्तर

26

This article is a bit old लेकिन अभी भी प्रासंगिक है ("जावा प्लग-इन में एप्लेट्स को डीबग कैसे करें" नामक एक अनुभाग सहित)।

संपादित करें: शायद Java plugin console का उपयोग करना स्टैकट्रैक प्राप्त करने का एक बेहतर तरीका है। यदि आप उस विंडो में "टी" दबाते हैं, तो आप निम्न देखेंगे:

सभी मौजूदा थ्रेड समूहों को प्रिंट करता है। दिखाया गया पहला समूह समूह मुख्य है। एसी सक्रिय गिनती के लिए खड़ा है; यह एक थ्रेड समूह और उसके बच्चे धागे समूहों में सक्रिय थ्रेड की कुल संख्या है। एजीसी सक्रिय समूह गिनती के लिए खड़ा है; यह एक थ्रेड समूह के सक्रिय बाल धागे समूहों की संख्या है। प्राइ प्राथमिकता के लिए खड़ा है; यह थ्रेड समूह की प्राथमिकता है। समूह मुख्य, अन्य थ्रेड समूह समूह के रूप में दिखाए जाएंगे, जहां नाम एक यूआरएल से जुड़ा यूआरएल है। धागे की अलग-अलग लिस्टिंग धागा नाम, धागा प्राथमिकता, जिंदा दिखाएगा अगर धागा जिंदा या नष्ट कर दिया है अगर धागा नष्ट किया जा रहा से प्रक्रिया में है, और डेमॉन अगर धागा एक डेमॉन धागा है।, Tracing and Logging.

यह पता लगाने स्तर के विकल्प सेट करता है अगले भाग में वर्णित के रूप में:

अन्य आदेश है कि मुझे लगता है कि कंसोल से सबसे अधिक बार उपयोग किया है 0-5 से ट्रेस स्तर है

कि पृष्ठ से, आप के स्तर को इस तरह दिखेगा कि देखेंगे:

    ,210
  • 0 - बंद
  • 1 - बुनियादी
  • 2 - नेटवर्क, कैश, और बुनियादी
  • 3 - सुरक्षा, नेटवर्क और बुनियादी
  • 4 - विस्तार, सुरक्षा, नेटवर्क और बुनियादी
  • 5 - LiveConnect , विस्तार, सुरक्षा, नेटवर्क, अस्थायी, और बुनियादी

ये उपकरण सभी काफी उपयोगी हो सकता है के रूप में आप आप के सिर में हो गया है दुनिया में क्या जानने की कोशिश कर रहे हैं आर एप्लेट्स मुझे पता है कि उन्होंने मेरे लिए काम किया है।

3

बिना किसी अपवाद से स्टैक निशान कंसोल पर दिखाई देंगे। इसे जावा कंट्रोल पैनल (उन्नत> जावा कंसोल> शो कंसोल) से सक्षम किया जा सकता है या कुछ ब्राउज़रों के पास इसे सक्षम करने के लिए विभिन्न विकल्प या प्लगइन हैं।

आप चल रहे प्लगइन प्रक्रिया में एक डीबगर संलग्न कर सकते हैं।

शायद सबसे अच्छा तरीका डीबग नहीं करना है। परीक्षण लिखें। कोड लिखें जो अनावश्यक मान्यताओं के लिए जोड़े नहीं है - उदाहरण के लिए कि आप एक एप्लेट के रूप में चल रहे हैं। दुर्भाग्यवश अधिकांश जीयूआई/एप्लेट उदाहरण कोड बहुत बुरी तरह लिखा गया है।

1

कंसोल पर अपवाद अपवाद भेजे जाते हैं। आप कंसोल पर अपने संदेश लिखने के लिए System.out का भी उपयोग कर सकते हैं। परिणामों को देखने के लिए आपको सिस्ट्रे में जावा आइकन पर राइट क्लिक करके कंसोल खोलना होगा और कंसोल खोलना होगा (ध्यान दें कि यह माइक्रोसॉफ्ट के वीएम के लिए अलग है)।

एप्लेट को सही तरीके से डीबग करने के लिए, आप एप्लेट को डीबग करने के लिए ग्रहण सेट कर सकते हैं। एप्लेट स्रोत फ़ाइल पर राइट क्लिक करें और ऐप्पल के रूप में डीबग पर क्लिक करें। (यदि आपके पास एप्लेट के पैरामीटर हैं तो आपको इसे सेट अप करना होगा।) फिर आप एप्लेट कोड से कदम उठा सकते हैं क्योंकि आप किसी भी अन्य जावा कोड को डीबग करेंगे।

53

जावा कंसोल और एप्लेट व्यूअर के स्पष्ट उपयोग के अलावा, जावा 6 अपडेट 7 से शुरू होने पर, आप का उपयोग कर सकते हैं जो जेडीके (जेडीके_एचओएमई/बिन/विजुअलवीएम) के साथ आता है। यह आपको प्रत्येक थ्रेड के स्टैक निशान देखने और यहां तक ​​कि सभी ऑब्जेक्ट उदाहरण देखने की अनुमति देता है।

ऐप्पल व्यूअर बहुत आसान है, आप अपने एप्लेट कक्षाओं को डीबग करने के लिए एक्लिप्स से चलाने के लिए "जावा/एप्पल के रूप में चलाएं" या "डीबग एएस/जावा एप्लेट" कर सकते हैं।

हालांकि, कभी-कभी कुछ सुरक्षा संबंधी सामग्री को डीबग करने के लिए ब्राउजर प्लगइन पर्यावरण एप्लेट व्यूअर से बहुत अलग है।

1) JRE_HOME से बाइनरी के लिए जानकारी डिबगिंग

बैकअप .jar फ़ाइलें/lib

(डाउनलोड प्राप्त और) एक स्थापित करें: यहाँ आप प्रभावी रूप से ब्राउज़र में एप्लेट डिबग करने के लिए क्या कर सकते हैं जेडीके आपके जेआरई के समान संस्करण के लिए।

कॉपी JDK_HOME/JRE/lib से JRE_HOME/lib

JDK अंदर फाइलों को .jar फ़ाइलें डिबगिंग जानकारी शामिल (स्रोत-कोड लाइन नंबर की जानकारी, चर नाम, आदि) और के साथ संकलित किया गया जेआरई फाइलों में यह जानकारी नहीं है।

इसके बिना आप अपने डीबगर में मूल रूप से कोर क्लास कोड में कदम नहीं उठा पाएंगे।

2) जावा प्लग-इन

जाओ जावा नियंत्रण कक्ष/ जावा/ जावा रनटाइम सेटिंग्स/ देखें/ उपयोगकर्ता/ रनटाइम पैरामीटर्स को

के लिए डीबगिंग सक्षम और जोड़ने डीबगिंग सक्षम करने के विकल्प। कुछ इस तरह:

-Djava.compiler=NONE -Xnoagent -Xdebug -Xrunjdwp:transport=dt_socket,address=2502,server=y,suspend=n 

दिलचस्प विकल्प हैं बंदरगाह (यहां 2502 का उपयोग कर, आप उतना किसी भी नि: शुल्क बंदरगाह का उपयोग कर सकते हैं, बस इसे बाद के लिए लिख) और निलंबित - अगर आप एप्लेट डिबग करने के लिए की जरूरत है स्टार्टअप, क्लासलोडिंग, आदि, इसे "वाई" पर सेट करें। इस तरह जब आप एक एप्लेट पेज तक पहुंचते हैं, तो ब्राउजर फ्रीज के रूप में दिखाई देगा क्योंकि जेवीएम तुरंत निलंबित हो जाता है ताकि कनेक्ट करने के लिए डीबगर की प्रतीक्षा हो।

3) का प्रयोग करें अपने पसंदीदा आईडीई दूर, जावा प्लग-इन डिबग करने के लिए उदाहरण के लिए

ग्रहण में, चुनें भागो/डीबग विन्यास .../रिमोट जावा आवेदन पर

पर क्लिक करें " नया "बटन।

सुनिश्चित करें कि कनेक्शन प्रकार "सॉकेट अटैच" है, यदि आपका ब्राउज़र स्थानीय है, और पोर्ट जो आपने पहले चुना था (उदाहरण में 2502) होस्टहोस्ट के रूप में स्थानीयहोस्ट चुनें।

जावा कोर क्लास स्रोत उपलब्ध कराने के लिए आपको स्रोत टैब पर अपने जेडीके में src.zip को शामिल करना पड़ सकता है।

कॉन्फ़िगरेशन को सहेजें, और एक बार आपका ब्राउज़र प्लग-इन चला रहा है (JVM को निलंबित या नहीं) प्लग-इन JVM से कनेक्ट करने के लिए रिमोट डीबगर चलाएं, जिसमें आपके एप्लेट स्रोतों को खोलने वाली एक परियोजना है।

+0

बहुत दिलचस्प, विशेष रूप से आईडीई (उदाहरण के लिए ग्रहण) से डिबगिंग के बारे में थोड़ा, लेकिन मैं इसे काम नहीं कर सकता ... क्या कहीं और जानकारी है जहां आप मुझे संदर्भित कर सकते हैं? – posdef

+4

विंडोज 2008 पर (मुझे लगता है कि यह विंडोज 7 के लिए भी सच है) मुझे काम करने के लिए आईई को व्यवस्थापक के रूप में चलाने के लिए था। मैंने साझा स्मृति परिवहन का उपयोग किया। – axk

+0

हां, विंडोज 7 वही व्यवहार करता है। धन्यवाद कुल्हाड़ी! – Zeemee

1

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

1

मेरे लिए ग्रहण में एप्लेट डिबगिंग प्राप्त करने के लिए सबसे महत्वपूर्ण कार्रवाई है, जावा नियंत्रण कक्ष (टैब जावा) में उपयोग करने के लिए सही बाइनरी में सेट करना है, जिसमें डीबग प्रतीकों हैं। जेडीके में शामिल केवल जेआरई के पास यह प्रतीक हैं। इसलिए जावा नियंत्रण कक्ष में एप्लेट डीबग करने के लिए, टैब जावा, जेडीके फ़ोल्डर के तहत सही जेआर ढूंढने के बाद, व्यू बटन दबाएं, उदाहरण के लिए "सी: \ प्रोग्राममी \ जावा \ jdk1.7.0_03 \ jre", और चेक सक्षम रखें केवल इस प्रविष्टि के लिए। यह मेरे लिए सामी Koivu क्या करने के लिए साफ तरीका है।

+0

सहमत हैं कि यह एक बहुत साफ तरीका है। –

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