ग्रहण - डिबगर ब्रेकपॉइंट पर नहीं रुकता है


97

मैं एक JUnit शूट करने की कोशिश कर रहा हूं। स्रोत कोड में, मैंने दो स्थानों पर ब्रेक पॉइंट सेट किया है: 1) एक पंक्ति में जहां एक स्थिर सदस्य को प्रारंभिक 2) परीक्षण के मामलों में से एक की पहली पंक्ति है।

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

किसी भी तरह की सहायता का स्वागत किया जाएगा।

मैं ग्रहण गैलीलियो और JUnit4 लांचर का उपयोग कर रहा हूं।


1
क्या आपके कोड को .class फ़ाइल में डिबग सूचना उत्पन्न करने के लिए -g विकल्प के साथ संकलित किया गया है? यह जरूर है।
duffymo

हाँ, यह -g विकल्प के साथ संकलित है।
रॉय

क्या आप यह भी जानकारी जोड़ सकते हैं कि आपके द्वारा उपयोग किए जा रहे JUnit और JRE का कौन सा संस्करण है? मेरा मानना ​​है कि इस संदर्भ में मददगार है।
विनीत रेनॉल्ड्स

JDK उपयोग में अधिक महत्वपूर्ण है (वैसे कुछ गड़बड़ JDK हैं जो इसका कारण बन सकते हैं)। कृपया JUnit के संस्करण पर क्वेरी को अनदेखा करें।
विनीत रेनॉल्ड्स

क्षमा करें, मुझे इसमें शामिल होना चाहिए। JDK 1.6 अपडेट 14.
रॉय

जवाबों:


39

यह JDK 6 अपडेट 14 में किसी एक बग से संबंधित हो सकता है , जैसा कि JDK 6 अपडेट 15 के लिए जारी किए गए नोटों में दर्शाया गया है

यदि यह वास्तव में मुद्दा बन जाता है, तो आपको JDK के उच्च संस्करण में जाना चाहिए (हालांकि इसकी कोई गारंटी नहीं है, क्योंकि फिक्स 6u16, 6u18 और 7b1 के खिलाफ जारी किए गए हैं )। सबसे अच्छा दांव -XX का उपयोग करना है: + UseParallelGC झंडा। न्यूनतम और अधिकतम ढेर के आकार में वृद्धि, पहली जीसी में देरी करने के लिए, अस्थायी राहत लाएं।

वैसे, इस बग रिपोर्ट का उपयोग ग्रहण में यह देखने के लिए करें कि अन्य लोग किस तरह से काम कर रहे हैं।


1
मैंने JDK 1.6 अद्यतन 16 में अपग्रेड किया। अब यह मेरे द्वारा सेट किए गए सभी ब्रेक पॉइंट्स पर रुक जाता है। आपकी सहायता के लिए धन्यवाद।
रॉय

आपका स्वागत है। लगता है कि यू 16 रिलीज नोट्स के बावजूद काफी अच्छी सीमा तक तय किया गया था।
विनीत रेनॉल्ड्स

धन्यवाद @ विनीत - मैं इस एक पर अपने बाल खींच रहा था :-)
जिम गैरीसन

@VineetReynolds: मैंने Jboss और Java ee से संबंधित आपके बहुमूल्य उत्तर देखे हैं। क्या आप मुझे इस समस्या को सुलझाने में मदद कर सकते हैं? stackoverflow.com/questions/28954323/…
मस्तिष्क तूफान

96

फिक्स रन क्लिक करने / सभी ब्रेकपॉइंट्स को छोड़ देने के समान सरल हो सकता है। मेरे लिए काम किया।


3
मुझे तीन दिन लग गए कि मैं किसी तरह क्लिक करूं
henry

1
धन्यवाद ... किसी भी तरह दुर्घटना से उस टूलबार आइकन पर क्लिक करना चाहिए :-P
kenyee

4
धन्यवाद ... पता नहीं कि कब क्लिक हुआ
njfife

1
बहुत बहुत धन्यवाद। अन्य उपयोगकर्ताओं के लिए, इस स्थिति में यदि आप एक ब्रेकपॉइंट बनाते हैं तो यह स्लेस्ड दिखाई देगा।
२14

मेरे साथ भी ऐसा ही हुआ। मैंने इसे कभी क्लिक नहीं किया ... !! संस्करण: मंगल रिलीज़ (4.5.0) बिल्ड आईडी: 20150621-1200
बीजर

52

सुनिश्चित करें कि, रन> डिबग कॉन्फ़िगरेशन के तहत, कि 'स्टॉप इन मेन' का चयन किया जाता है, यदि आपकी स्थिति पर लागू होता है।


1
कृपया पोस्ट करने से पहले पिछली प्रतिक्रियाओं को अवश्य पढ़ें। समस्या उनके jvm संस्करण की थी .. और तीन साल पहले हल हो गई थी। पुराने थ्रेड्स को पुनर्जीवित करने के लिए सबसे अच्छा नहीं जब तक कि आपकी प्रतिक्रिया में कुछ महत्वपूर्ण योगदान न हो, जो पहले से ही पिछले उत्तरों में शामिल नहीं था।
लेह

6
धन्यवाद। @ उत्तरदाता आपके उत्तर ने मेरी समस्या हल कर दी। यह अजीब है कि "स्टॉप इन मेन" परेशान था।
यू शेन

25
ऐसा प्रतीत होता है कि उनके उत्तर में कुछ महत्वपूर्ण योगदान दिया गया था जो पहले से ही पिछले उत्तर में शामिल नहीं थे :)
स्काउबो

ध्यान दें, यह जावा अनुप्रयोगों के लिए एक विकल्प है, लेकिन एंड्रॉइड एप्लिकेशन नहीं।
नौमेनन

21

आमतौर पर जब मेरे साथ ऐसा होता है (दुर्लभ लेकिन ऐसा होता है) तो इसका मतलब है कि निष्पादित किया जा रहा कोड संपादक के कोड से अलग है। यह ग्रहण के लिए समय-समय पर होगा कि निर्मित कक्षाएं और संपादक में कोड सिंक से बाहर हैं। जब ऐसा होता है तो मुझे सभी प्रकार के अजीब डीबगर व्यवहार मिलते हैं (खाली लाइनों को कोड करना, कोड्स की लंघन रेखाएं)।

ग्रहण को फिर से शुरू करना, सभी परियोजनाओं को साफ करना और सब कुछ फिर से बनाना आमतौर पर चीजों को साफ करता है। मेरे पास मावेन प्लगइन्स भी थे (पुराने संस्करण ... अभी कुछ समय से नहीं थे) जिसमें ऐसा करने की प्रवृत्ति थी।

अन्यथा यह एक बग हो सकता है, शायद एक विनीत ने कहा,

उम्मीद है की यह मदद करेगा


हाँ, आपने जो बताया है वह IDEs में अधिक होता है जो स्वचालित रूप से कोड को फिर से जमा नहीं करता है। Oracle JDeveloper (व्यक्तिगत अनुभव से) और कुछ हद तक (Netbeans) को वांछित पाया गया है।
विनीत रेनॉल्ड्स

1
अच्छी सलाह। पर्याप्त नहीं कहा। कभी-कभी हम समस्या के बारे में सोचते हैं और यह सिचुएशन से बाहर की प्रणाली है। जैसे कि यह साधारण मुद्दों को शूट करने में परेशानी के लिए कंप्यूटर को रिबूट करने के साथ है।
ज़ोनट्रॉन

धन्यवाद, मेरे मामले में यही समस्या थी। यह बेवकूफ लगता है, लेकिन एक निर्माण के बाद एक साधारण साफ और F5 ने काम किया।
jfajunior

20

आपने एक्लिप्स टूलबार में गलती से सभी ब्रेक पॉइंट को छोड़ दिया होगा। इसे ठीक करने के लिए ग्रहण -> भागो -> सभी ब्रेकप्वाइंट छोड़ें।


1
Arggh, इसके लिए एक शॉर्टकट भी है, मैंने सबसे अधिक शायद मेनू आइटम की जांच नहीं की है, लेकिन मुझे Ctrl + Alt + B हिट होने की संभावना है। फिर भी धन्यवाद।
15

3

परियोजना -> JRE 8 पर मेरे लिए क्लीन काम करना उचित लग रहा था


2

दूरस्थ के साथ डिबगर कार्य करने के लिए, डीबग जानकारी के साथ जावा .class फ़ाइलों का अनुपालन किया जाना चाहिए। यदि " -g: कोई नहीं " विकल्प संकलक को पारित किया गया था, तो क्लास फ़ाइल में आवश्यक जानकारी नहीं होगी और इसलिए डीबगर दूरस्थ रूप से उस वर्ग के साथ स्रोत कोड पर ब्रेकप्वाइंट से मिलान नहीं कर पाएगा। इस बीच, अगर जार / क्लास की फ़ाइलों को बाधित किया गया था , तो उनके पास कोई डीबग जानकारी भी नहीं होगी। आपकी प्रतिक्रियाओं के अनुसार, संभवतः यह आपका मामला नहीं है, लेकिन यह जानकारी उन लोगों के लिए उपयोगी हो सकती है जो समान मुद्दे का सामना करते हैं।


2

मेरे मामले में समस्या यह थी कि मैंने डिबग को डिबग के परिप्रेक्ष्य में खुला नहीं देखा था, इसलिए:

1 - सुनिश्चित करें कि आपने डिबग परिप्रेक्ष्य खोला है:

ग्रहण डिबगर 1 काम नहीं कर रहा है

2 - सुनिश्चित करें कि आपके पास डिबग व्यू ओपन है:

ग्रहण डिबगर 2 काम नहीं कर रहा है



1

JDK7 के लिए, रन-> डिबग कॉन्फिगरेशन, "डिबगिंग के दौरान टेस्ट रन के बाद ज्यूनिट को चालू रखें" चेक करें।


1

एक बार मेरे पास आया, जब मैंने "रन> बिल्ड स्वचालित रूप से" अनचेक किया था और इसे फिर से जांचना भूल गया था।


1

सुनिश्चित करें कि आपने शीर्ष पर पैकेज घोषित किया है। मेरे ग्रूवी कोड में यह ब्रेकपॉइंट पर रुकता है:

package Pkg1

import java.awt.event.ItemEvent;

isMule = false

class LineItem {
    // Structure defining individual DB rows
    public String ACCOUNT_CODE
    public String ACCOUNT_DESC
...

यह ब्रेकपॉइंट पर नहीं रुकता है:

import java.awt.event.ItemEvent;

isMule = false

class LineItem {
    // Structure defining individual DB rows
    public String ACCOUNT_CODE
    public String ACCOUNT_DESC
...

बहुत संघर्ष करने के बाद यह मेरी समस्या का समाधान करता है। धन्यवाद +1
फ़ेडरिको पियाज़ा

0

ब्रेकपॉइंट निकालने के लिए :

  1. एक जूनियर परीक्षा के रूप में अपनी कक्षा को डिबग करें
  2. जब आपका डिबगर बंद हो जाता है, तो "चर" और "भाव" के बगल में "ब्रेकप्वाइंट" टैब पर क्लिक करें
  3. ब्रेकपॉइंट टैब के शीर्ष दाईं ओर, दो 'X' वाले बटन पर क्लिक करें
  4. परीक्षण रोकें, अपने ब्रेकपॉइंट को बदलें और डीबगर को फिर से चलाएँ

0

यह भी सत्यापित करें कि क्या अन्य लाइनों पर ब्रेकप्वाइंट काम करते हैं, यह डीबगर में बग हो सकता है। मुझे एक्लिप्स डिबगर के साथ एक समस्या हुई है जहां एक बूलियन असाइनमेंट पर एक ब्रेकपॉइंट लगा रहा है जिसका कोड अगली पंक्ति पर था, मैंने यहां यह रिपोर्ट नहीं किया , लेकिन इसे पिछली या अगली पंक्ति में रखा।


0

अगर कुछ भी काम नहीं करता है-

  1. उस दूरस्थ / स्थानीय डीबग कॉन्फ़िगरेशन को निकालें, और एक नया बनाएँ।
  2. डिबग कॉन्फ़िगरेशन में स्रोत जोड़ें।

0

एक अन्य संभावित समस्या यह है कि फ़ायरवॉल द्वारा डीबगर पोर्ट को अवरुद्ध किया जा सकता है। उदाहरण के लिए, मैं खच्चर anypoint स्टूडियो (v 5.4.3) का उपयोग कर रहा था। डिफ़ॉल्ट डीबगर पोर्ट 6666 है। जब कोई प्रवाह निष्पादित होता है, तो यह ब्रेकपॉइंट पर नहीं रुकता। जब मैंने पोर्ट को दूसरे (जैसे 8099) में बदल दिया, तो यह ठीक काम किया।


0

Right click->Debug Configurationयदि बहुत अधिक डिबग इंस्टेंस बनते हैं, तो जाकर देखें । जब मैंने कॉन्फ़िगरेशन से कई डिबग इंस्टेंसेस को हटा दिया और नए सिरे से डीबग करना शुरू किया तो मेरा मुद्दा हल हो गया।


0

यदि आप ग्रहण पर हैं,

"पैकेज एक्सप्लोरर" के तहत अपने प्रोजेक्ट फ़ोल्डर पर राइट क्लिक करें।

गोटो स्रोत -> सफाई करें और अपनी परियोजना चुनें।

यह किसी भी गंदगी को साफ करेगा और आपका ब्रेक-पॉइंट अब काम करना चाहिए।



0

मेरे मामले में मेरे पास एक ही कार्यक्षेत्र में कई परियोजनाएँ थीं। मैं जिस जावा फाइल को डिबग करने की कोशिश कर रहा था वह एक ही पैकेज वाली एक से अधिक परियोजनाओं में मौजूद थी।

मुझे दूसरी परियोजना की आवश्यकता नहीं थी, इसलिए बस असंबंधित परियोजनाएं बंद कर दी गईं (या असंबंधित परियोजना से फ़ाइल को हटा दें)।


0

विनीत रेनॉल्ड्स के जवाब में एक अतिरिक्त टिप्पणी।

मुझे पता चला कि मुझे -XX:+UseParallelGCअंदर जाना हैeclipse.ini

मैंने वर्चुअल मशीन (vm) तर्कों को निम्नानुसार सेटअप किया

-vmargs
-Dosgi.requiredJavaVersion=1.7
-Xms512m
-Xmx1024m
-XX:+UseParallelGC
-XX:PermSize=256M
-XX:MaxPermSize=512M

इस मुद्दे को हल किया।


-2

यह मेरे लिए काम करता है:

मुझे अपने स्थानीय सर्वर पते को इस तरह PHP सर्वर विन्यास में रखना था :

यहां छवि विवरण दर्ज करें

नोट : वह पता, वह है जिसे मैं अपनी Apache .conf फ़ाइल में कॉन्फ़िगर करता हूं ।

नोट : एकमात्र ब्रेकपॉइंट जो काम कर रहा था, वह था 'पहली पंक्ति में ब्रेक', उसके बाद, ब्रेकप्वाइंट काम नहीं करता था।

नोट : अपने जाँच xdebug अपने में गुण php.ini फ़ाइल, और किसी भी आपको लगता है की आवश्यकता नहीं है हटा दें।


1
मैं यह देखने में विफल रहा कि यह सवाल (
जुनीत
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.