2008-09-17 25 views

उत्तर

4

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

यह हमेशा एक समस्या रही है, क्योंकि मैं वीएम पर ग्रहण स्थापित करने की परेशानी पर नहीं जाना चाहता (यह पहले से धीमा है!), फिर भी मुझे इसे पाने का आसान तरीका नहीं पता इसे चलाने से पहले मेरी कमांडलाइन-चलने वाली कक्षा से कनेक्ट करें।

बचाव के लिए jdb! यह एक का इलाज काम करता है - छोटे और कार्यात्मक, लगभग बिंदु जहां यह नंगे है ... इस बलों आप अपने मन और अधिक लागू करने के लिए की तुलना में आप उपकरण लागू (जैसे मैं here कहा)।

संदर्भ प्रिंट आउट करना सुनिश्चित करें (solaris, windows, java 1.5 - मुझे लगता है कि वे सब के बारे में एक ही कर रहे हैं, वास्तव में) और अपने स्रोत कोड खुला और अपने दूसरी स्क्रीन पर ब्राउज़ करने योग्य है। मुझे आशा है कि आपके पास दूसरी स्क्रीन होगी, या आप बहुत अधिक टैबबिंग करेंगे।

+0

की अनुमति नहीं है, तो आप JPDA (http://docs.oracle.com/javase/1.5 उपयोग कर सकते हैं। 0/डॉक्स/गाइड/जेपीडीए/conninv.html) कमांड लाइन स्विच आपके जावा वीएम को डीबगर कनेक्शन के लिए सुनाने के लिए स्विच करता है। एक डीबगर कनेक्ट होने तक निष्पादन को निलंबित करने के लिए निलंबन = y को आज़माएं, डीबगर कनेक्ट होने से पहले आपके प्रोग्राम की अपनी समस्या से बचें। फ़ायरवॉल कॉन्फ़िगरेशन या एसएसएच सुरंग सेटअप के साथ संयुक्त एक पोर्ट नंबर निर्दिष्ट करके आप नेटवर्क पर अपने रिमोट वीएम से कनेक्ट कर सकते हैं। उदाहरण: -agentlib: jdwp = transport = dt_socket, server = y, पता = 5005, निलंबित = y – Neek

-1

मैं ग्रहण में दूरस्थ डीबगिंग टूल का उपयोग करना पसंद।

-3

JDB उपयोग करने के लिए अविश्वसनीय रूप से मुश्किल है। System.outs रखना या आईडीई डीबगर का उपयोग करना बेहतर परिणाम देगा। और अधिक रोचक विशेषताओं (जैसे थ्रेड्स, ढेर आकार इत्यादि को ट्रैक करना) के लिए, आप JConsole टूल के साथ ग्राफिकल जानकारी प्राप्त कर सकते हैं।

+0

JDB किसी भी डिबगर के रूप में उपयोग करने के लिए के रूप में आसान है, इस प्रतिक्रिया अनुत्पादक है । इसके अलावा JConsole आप, चर, सेट breakpoints घड़ी एक और जवाब में codingME ने उल्लेख किया आदि अपवाद पर तोड़ने, –

2

मान लें अपने कार्यक्रम के लिए निम्न आदेश द्वारा शुरू किया गया है:

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=<port> <class> 

आप jdb करके इस प्रक्रिया को संलग्न कर सकते हैं:

jdb -attach <port> 
संबंधित मुद्दे