JDB - कदम
यह अध्याय बताता है कि किसी प्रोग्राम को डीबग करने में स्टेपिंग की अवधारणा का उपयोग कैसे करें। स्टेपिंग डिबगर सुविधा है जो आपको लाइन से लाइन के माध्यम से कदम से कोड को निष्पादित करने की सुविधा देती है। इसका उपयोग करते हुए, आप यह सुनिश्चित करने के लिए कोड की प्रत्येक पंक्ति की जांच कर सकते हैं कि वे क्या व्यवहार कर रहे हैं।
निम्नलिखित आदेशों का उपयोग चरण प्रक्रिया में किया जाता है:
- कदम: निष्पादन की अगली पंक्ति के लिए कदम
- सूची: जांच करता है कि आप कोड में कहां हैं
- प्रतियोगिता: शेष निष्पादन जारी है
उदाहरण
निम्न उदाहरण पिछले अध्याय में हमारे द्वारा उपयोग किए गए जोड़ें वर्ग का उपयोग करता है:
public class Add
{
public int addition( int x, int y)
{
int z = x + y;
return z;
}
public static void main( String ar[ ] )
{
int a = 5, b = 6;
Add ob = new Add();
int c = ob.addition(a,b);
System.out.println("Add: " + c);
}
}
उपरोक्त फ़ाइल को Add.java के रूप में सहेजें। निम्न आदेश का उपयोग करके इस फ़ाइल को संकलित करें:
\>javac Add.java
आइए मान लेते हैं कि ब्रेकप्वाइंट ऐड क्लास के मुख्य () तरीके पर सेट है। निम्न चरण दिखाते हैं कि एड क्लास में स्टेपिंग कैसे लागू करें।
चरण 1: नौकरी निष्पादित करें
निम्न आदेश एड नामक वर्ग को निष्पादित करना शुरू करता है।
> run Add
यदि आप इस कमांड को निष्पादित करते हैं, तो आपको निम्न आउटपुट देखने को मिलते हैं। इस आउटपुट में, आप पा सकते हैं कि निष्पादन ब्रेकपॉइंट स्थिति में बंद हो जाता है, अर्थात, मुख्य () विधि पर।
निष्पादन मुख्य विधि की पहली पंक्ति पर रुक जाता है, जो "int a = 5, b = 6;" या पंक्ति संख्या: 11 कोड में। आप इस जानकारी को आउटपुट में देख सकते हैं।
चरण 2: कोड के माध्यम से कदम
निम्न आदेश अगली पंक्ति के निष्पादन को बढ़ाता है।
main[1] step
अब लाइन नं। 12 पर निष्पादन कदम: 12. आपको निम्नलिखित आउटपुट देखने को मिलते हैं।
चरण 3: कोड को सूचीबद्ध करें
निम्नलिखित कमांड कोड को सूचीबद्ध करता है:
main[1] list
आपको निम्न आउटपुट मिलता है। सूची कमांड का उपयोग आपको कोड को उस लाइन को बताने के लिए किया जाता है, जिस तक प्रोग्राम कंट्रोल पहुंच चुका है। निम्नलिखित स्क्रीनशॉट में तीर का निशान => देखें जो प्रोग्राम नियंत्रण की वर्तमान स्थिति को दर्शाता है।
चरण 4: निष्पादन जारी रखें
निम्नलिखित कमांड कोड को निष्पादित करने के लिए जारी है:
main[1] cont
यह कमांड कोड की शेष लाइनों को निष्पादित करना जारी रखता है। आउटपुट नीचे दिखाया गया है:
> Add:11
The application exited
\>
आम तौर पर, तीन प्रकार के चरण होते हैं:
- में कदम
- चहलकदमी
- बाहर कदम
में कदम
इस कमांड का उपयोग करके, आप कोड की अगली पंक्ति में कदम रख सकते हैं। यदि कोड की अगली पंक्ति एक फ़ंक्शन कॉल है, तो यह फ़ंक्शन की शीर्ष रेखा पर नियंत्रण चलाकर फ़ंक्शन में प्रवेश करती है।
निम्नलिखित कोड में, तीर चिह्न कोड में नियंत्रक को परिभाषित करता है।
public class Add
{
public int addition( int x, int y)
{
int z = x + y;
return z;
}
public static void main( String ar[ ] )
{
int a = 5, b = 6;
-> Add ob = new Add();
int c = ob.addition(a,b);
System.out.println("Add: " + c);
}
}
यदि आप उपयोग करते हैं step intoकमांड, कंट्रोलर अगली लाइन पर जाता है, अर्थात, "int c = ob.addition (a, b);"। इस लाइन पर, एक फ़ंक्शन कॉल हैaddition(int, int) इसलिए नियंत्रक तीर के निशान के साथ अतिरिक्त फ़ंक्शन की सबसे ऊपरी पंक्ति में जाता है जैसा कि नीचे दिखाया गया है:
public class Add
{
public int addition( int x, int y)
-> {
int z = x + y;
return z;
}
public static void main( String ar[ ] )
{
int a = 5, b = 6;
Add ob = new Add();
int c = ob.addition(a,b);
System.out.println("Add: " + c);
}
}
चहलकदमी
स्टेप ओवर अगली पंक्ति को भी निष्पादित करता है। लेकिन अगर अगली पंक्ति एक फ़ंक्शन कॉल है, तो यह पृष्ठभूमि में उस फ़ंक्शन को निष्पादित करता है और परिणाम देता है।
एक उदाहरण लेते हैं। निम्नलिखित कोड में, तीर का निशान कोड में नियंत्रण को परिभाषित करता है।
public class Add
{
public int addition( int x, int y)
{
int z = x + y;
return z;
}
public static void main( String ar[ ] )
{
int a = 5, b = 6;
-> Add ob = new Add();
int c = ob.addition(a,b);
System.out.println("Add: " + c);
}
}
यदि आप उपयोग करते हैं step overकमांड, नियंत्रण अगली पंक्ति में ले जाता है, अर्थात, "int c = ob.addition (a, b);"। इस पंक्ति में, एक फ़ंक्शन कॉल हैaddition(int, int) इसलिए फ़ंक्शन का निष्पादन पृष्ठभूमि में किया जाता है और परिणाम नीचे दिखाए गए अनुसार तीर के निशान के साथ वर्तमान पंक्ति में वापस आ जाता है:
public class Add
{
public int addition( int x, int y)
{
int z = x + y;
return z;
}
public static void main( String ar[ ] )
{
int a = 5, b = 6;
Add ob = new Add();
-> int c = ob.addition(a,b);
System.out.println("Add: " + c);
}
}
बाहर कदम
स्टेप आउट अगली पंक्ति को निष्पादित करता है। यदि अगली पंक्ति एक फ़ंक्शन कॉल है, तो यह बंद हो जाता है और कोड के शेष लाइनों के साथ फ़ंक्शन निष्पादन जारी रहता है।
एक उदाहरण लेते हैं। निम्नलिखित कोड में, तीर चिह्न कोड में नियंत्रक को परिभाषित करता है।
public class Add
{
public int addition( int x, int y)
{
int z = x + y;
return z;
}
public static void main( String ar[ ] )
{
int a = 5, b = 6;
-> Add ob = new Add();
int c = ob.addition(a,b);
System.out.println("Add: " + c);
}
}
यदि आप उपयोग करते हैं step outकमांड, कंट्रोलर अगली लाइन पर जाता है, अर्थात, "int c = ob.addition (a, b);"। इस पंक्ति में, एक फ़ंक्शन कॉल हैaddition(int, int) इसलिए फ़ंक्शन निष्पादन छोड़ दिया गया है और शेष निष्पादन तीर के निशान के साथ जारी है जैसा कि नीचे दिखाया गया है:
public class Add
{
public int addition( int x, int y)
{
int z = x + y;
return z;
}
public static void main( String ar[ ] )
{
int a = 5, b = 6;
Add ob = new Add();
-> int c = ob.addition(a,b);
System.out.println("Add: " + c);
}
}