2010-03-18 4 views
19

एक अपवाद हुआ बिंदु पर रोकने के लिए ग्रहण कैसे सेट कर सकता हूं।एक अपवाद हुआ लाइन पर रुकने के लिए ग्रहण कैसे स्थापित करूं?

मेरे पास एक अपवाद पर तोड़ने के लिए एक ग्रहण ब्रेकपॉइंट सेटअप है। नीचे दिए गए कोड उदाहरण में, मेरी समस्या यह है कि ग्रहण इंटीजर स्रोत कोड खोलने का प्रयास करता है। क्या मेरे कोड उदाहरण में दिखाए गए बिंदु पर केवल डीबगर ब्रेक करने का कोई तरीका है? यदि मैं स्टैक ट्रेस को नीचे ले जाता हूं, तो मैं इस लाइन पर पहुंच जाऊंगा, अगर यह "सोर्स नहीं मिला" विंडो के बिना ऐसा करने का कोई तरीका है तो यह अच्छा होगा।

यह विजुअल स्टूडियो में किया जा सकता है, इसलिए यह मुझे पागल कर रहा है कि ग्रहण में ऐसा करने का कोई तरीका नहीं ढूंढ पा रहा है।

package com.test; 

public class QuickTest 
{ 
    public static void main(String[] args) 
    { 
    try 
    { 
     test(); 
    } 
    catch(NumberFormatException e) 
    { 
     System.out.println(e.getMessage()); 
    } 
} 

    private static void test() 
    { 
    String str = "notAnumber"; 

    Integer.parseInt(str);//<----I want debugger to stop here 
    } 
} 

 

उत्तर

3
  1. तुम सिर्फ Integer.parseInt(str) लाइन पर एक ब्रेकपाइंट सेट नहीं कर सकता?
  2. यदि आप जेआरई के बजाय जेडीके का उपयोग करने पर अपनी ग्रहण परियोजना को इंगित करते हैं तो इसे सभी प्लेटफार्म वर्गों (इंटीजर इत्यादि) के लिए स्रोत कोड लेना चाहिए।
+1

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

+1

आप शायद 'जेवीएम' (?) – Fortega

+0

@ फोर्टेगा, हाँ, धन्यवाद –

5

प्राथमिकताएं -> जावा -> डीबग -> चरण छनन संकुल जब डिबगिंग (java.*, sun.*, etc) डिबग पर यकीन है कि तीर को छानने छोटे कदम चयनित है आप को फ़िल्टर करना चाहते हैं।

यह चाल करना चाहिए।

+0

कूल! मैं हमेशा यह जानना चाहता था कि यह कैसे करें! – charlie

+1

ऐसा लगता है कि जब ब्रेकपॉइंट अपवाद को तोड़ने के लिए सेट किया गया है, तो यह काम नहीं करता है :( – Crispy

+0

यदि आप चरण वापसी को दबाते हैं, तो उस बिंदु पर फ्रेम पर जाएं या ड्रॉप करें? सुनिश्चित नहीं है कि यह काम करेगा लेकिन यह एक शॉट है। –

2

डीबग व्यू वर्तमान निष्पादन के पूरे ढेर को दिखाएगा। आपको उस लाइन का चयन करने की आवश्यकता है जिसे आप देखना चाहते हैं। के रूप में आप एक ब्रेकपाइंट वहाँ था यह वही होगा, आप सभी चर आदि

35

मुझे यकीन है कि और कैसे वहाँ पाने के लिए नहीं कर रहा हूँ देख सकते हैं, लेकिन मैं सिर्फ कार्य करें:

Window -> Show View -> Breakpoints 

और उस टैब में एक "जे!" है जो आपको अपवादों पर ब्रेकपॉइंट्स सेट करने देता है।

+0

हाँ, मैं यही उपयोग करता हूं। मेरे उदाहरण के अलावा यह खोलने की कोशिश करता है इंटीजर स्रोत कोड। मैं इंटीजर स्रोत कोड को खोलना नहीं चाहता हूं। मैं सिर्फ डीबगर को 'Integer.parseInt (str) पर रोकना चाहता हूं;' – Crispy

+2

अपवाद फेंकने पर डीबगर बंद हो जाएगा (जो आपने इसे करने के लिए कहा है) और हमेशा उस स्रोत लाइन पर संपादक को खोल देगा जो अपवाद को फेंक देता है - इस मामले में Integer.parseInt() में। संपूर्ण कॉल स्टैक भी दिखाया गया है, और आप उस स्तर पर स्रोत को देखने के लिए उपयुक्त स्तर पर क्लिक कर सकते हैं। – DJClayworth

+0

फिर आप अपने स्वयं के कोड पर वापस जाने के लिए कॉल स्टैक का उपयोग कर सकते हैं, इसके लिए जादूगर रूप से यह तय करने का कोई वास्तविक तरीका नहीं है कि आप किस स्तर के स्टैक को दिलचस्प मानते हैं। आपको वास्तव में यह जवाब स्वीकार करना चाहिए। – David

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