CodeGym /جاوا بلاگ /Random-UR /IntelliJ IDEA میں ڈیبگنگ: ایک ابتدائی رہنما
John Squirrels
سطح
San Francisco

IntelliJ IDEA میں ڈیبگنگ: ایک ابتدائی رہنما

گروپ میں شائع ہوا۔
CodeGym کمیونٹی میں سب کو ہیلو! آج آئیے ڈیبگنگ کے بارے میں بات کرتے ہیں — یہ کیا ہے اور IntelliJ IDEA میں کیسے ڈیبگ کرنا ہے۔ یہ مضمون ان لوگوں کے لیے ہے جو پہلے ہی جاوا کور کے بارے میں کم سے کم علم رکھتے ہیں۔ لائبریریوں کو شائع کرنے کے لیے کوئی فریم ورک یا پیچیدہ طریقہ کار نہیں ہوگا۔ آرام سے ٹہلنا۔ تو اپنے آپ کو آرام دہ بنائیں اور آئیے شروع کریں! IntelliJ IDEA میں ڈیبگنگ: ایک ابتدائی رہنما - 1

آپ کو ڈیبگ موڈ کی ضرورت کیوں ہے۔

آئیے فوری طور پر اپنے لیے کچھ واضح کریں: کیڑے کے بغیر کوئی کوڈ نہیں ہے... زندگی اسی طرح کام کرتی ہے۔ لہذا، اگر ہمارا کوڈ ہماری توقع کے مطابق کام نہیں کرتا ہے تو ہمیں ٹکڑے ٹکڑے نہیں ہونا چاہئے اور ہمت نہیں ہارنی چاہئے۔ لیکن ہمیں کیا کرنا چاہیے؟ ٹھیک ہے، ہم ہر جگہ بیانات ڈال سکتے ہیں System.out.printlnاور پھر غلطی تلاش کرنے کی امید میں کنسول آؤٹ پٹ کے ذریعے کنگھی کر سکتے ہیں۔ اس نے کہا، آپ محتاط لاگنگ کا استعمال کرتے ہوئے (اور لوگ کرتے ہیں) ڈیبگ کر سکتے ہیں۔ لیکن اگر آپ اپنا کوڈ مقامی مشین پر چلا سکتے ہیں تو ڈیبگ موڈ استعمال کرنا بہتر ہے۔ میں ابھی نوٹ کرنا چاہتا ہوں کہ اس مضمون میں ہم IntelliJ IDEA کا استعمال کرتے ہوئے ایک پروجیکٹ کو ڈیبگ کرنے پر غور کریں گے۔

ڈیبگ موڈ کیا ہے؟

ڈیبگ موڈ ڈیبگنگ (چیکنگ) چلانے والے کوڈ کے لیے ہے۔ یہ آپ کے لیے نامزد جگہوں پر عمل درآمد کو روکنا اور یہ دیکھنا ممکن بناتا ہے کہ چیزیں کیسے آگے بڑھ رہی ہیں۔ یہ آپ کو کوڈ میں کسی خاص جگہ پر پروگرام کی حالت کو سمجھنے دیتا ہے۔ یہ بالکل ایسے ہی ہے جیسے گھڑی کو روک کر ہر چیز کو پہلو سے دیکھنے کے قابل ہو۔ ٹھنڈا، ٹھیک ہے؟ ہمارا مقصد اپنے پیارے IntelliJ IDEA ترقیاتی ماحول کا استعمال کرتے ہوئے ایپلیکیشنز کو ڈیبگ کرنے کا طریقہ جلدی اور آسانی سے سیکھنا ہے۔

آپ کو ڈیبگنگ شروع کرنے کی ضرورت ہے۔

یہاں کچھ مفت مشورہ ہے: اس مضمون کو پڑھتے ہوئے، وہ سب کچھ کریں جو یہاں بیان کیا جائے گا — آپ کے پاس وہ سب کچھ ہے جس کی آپ کو پیروی کرنے کی ضرورت ہے۔ تمہیں کیا چاہیے:
  1. IntelliJ IDEA ورژن 2019.3.1 یا اس سے زیادہ۔ اگر کسی کے پاس یہ نہیں ہے تو، یہاں ایک لنک ہے جہاں سے آپ اسے ڈاؤن لوڈ کر سکتے ہیں ۔ کمیونٹی ایڈیشن ڈاؤن لوڈ کریں — یہی وہ ورژن ہے جسے میں استعمال کروں گا۔
  2. اس GitHub پروجیکٹ کو کلون کریں اور اسے IDEA کے ذریعے درآمد کریں۔
آئیڈیا کھولیں: ڈیبگ پریزنٹیشنIntelliJ IDEA میں ڈیبگنگ: ایک ابتدائی رہنما - 2 پروجیکٹ کو منتخب کریں اور اوکے کو دبائیں ۔ پھر آپ کو درج ذیل ونڈو نظر آئے گی: منتخب کردہ آپشنز کو چھوڑیں: بیرونی ذرائع سے پروجیکٹ درآمد کریں اور Maven ۔ ختم پر کلک کریں ۔ اب جب کہ ہم نے پروجیکٹ درآمد کر لیا ہے، ہم باقی عمل کو ایک زندہ مثال کے ساتھ بیان کر سکتے ہیں۔ IntelliJ IDEA میں ڈیبگنگ: ایک ابتدائی رہنما - 3

تھوڑا سا نظریہ... میں وعدہ کرتا ہوں : ڈی

تھوڑا سا ڈیبگ کرنا شروع کرنے کے لیے، آپ کو یہ سمجھنا ہوگا کہ بریک پوائنٹ کیا ہے اور چند ہاٹ کیز سے واقف ہونا ضروری ہے۔ بریک پوائنٹ ایک خاص مارکر ہوتا ہے جو اس بات کی نشاندہی کرتا ہے کہ آپ ایپلیکیشن کا عمل کہاں رکنا چاہتے ہیں، ممکنہ طور پر درخواست کی حالت کی بنیاد پر۔ آپ یا تو بائیں جانب والے پینل پر بائیں طرف کلک کرکے، یا کوڈ کے مقام پر کلک کرکے اور Ctrl+F8 دباکر بریک پوائنٹ سیٹ کرسکتے ہیں ۔ آئیے بریک پوائنٹس کی تین اقسام دیکھیں: لائن بریک پوائنٹس، فیلڈ واچ پوائنٹس، اور طریقہ بریک پوائنٹس۔ یہ اس طرح نظر آتا ہے:
  • ایک لائن پر:

    IntelliJ IDEA میں ڈیبگنگ: ایک ابتدائی رہنما - 4

    اگر کسی بیان میں لیمبڈا اظہار ہے، تو IDEA آپ کو یہ انتخاب کرنے کا اشارہ کرتا ہے کہ آیا بریک پوائنٹ کو پورے بیان پر رکھنا ہے یا خاص طور پر لیمبڈا اظہار پر:

    IntelliJ IDEA میں ڈیبگنگ: ایک ابتدائی رہنما - 5
  • ایک طریقہ پر:

    IntelliJ IDEA میں ڈیبگنگ: ایک ابتدائی رہنما - 6
  • کلاس پر:

    IntelliJ IDEA میں ڈیبگنگ: ایک ابتدائی رہنما - 7
بریک پوائنٹس کو شامل کرنے کے لیے استعمال ہونے والے انہی اقدامات پر عمل کر کے ہٹایا جا سکتا ہے۔ ایسے حالات ہیں جب آپ انہیں غیر فعال (خاموش) کرنا چاہیں گے۔ ایسا کرنے کے لیے IntelliJ IDEA میں ڈیبگنگ: ایک ابتدائی رہنما - 8ڈیبگ سیکشن میں آئیکن تلاش کریں۔ یہ تمام بریک پوائنٹس کو خاموش کر دے گا۔ یہ دیکھنے کے لیے کہ کون سے بریک پوائنٹس سیٹ کیے گئے ہیں، آپ یا تو نیچے بائیں کونے میں ڈیبگ سیکشن میں جا کر آئیکن تلاش کر سکتے ہیں IntelliJ IDEA میں ڈیبگنگ: ایک ابتدائی رہنما - 9، یا Ctrl+Shift+F8 دبائیں : IntelliJ IDEA میں ڈیبگنگ: ایک ابتدائی رہنما - 10بریک پوائنٹس کی فہرست میں منتقل ہونے سے، ہم درج ذیل دیکھیں گے: IntelliJ IDEA میں ڈیبگنگ: ایک ابتدائی رہنما - 11دو بریک پوائنٹس ہیں۔ یہاں:
  • Bee.java:24 — لائن 24 پر Bee کلاس میں
  • Main.java:14 — لائن 14 پر مین کلاس میں
براہ کرم نوٹ کریں کہ اگر آپ نے پروجیکٹ کو کلون کر لیا ہے تو یہ بریک پوائنٹ خود بخود سیٹ نہیں ہوں گے: آپ کو انہیں خود سیٹ کرنا ہو گا! جاوا استثنا بریک پوائنٹس سیکشن بھی ہے ۔ یہ بہت مفید ہے۔ یہاں آپ ایک مضمر بریک پوائنٹ شامل کر سکتے ہیں تاکہ پروگرام کسی استثنا یا مخصوص استثنا کو پھینکنے سے پہلے رک جائے۔ ہم RuntimeException کے لیے ایک مضمر بریک پوائنٹ شامل کریں گے۔ یہ کرنا آسان ہے۔ اوپری بائیں کونے میں "+" آئیکن تلاش کریں۔ اس پر کلک کریں اور Java Exception Breakpoints کو منتخب کریں : IntelliJ IDEA میں ڈیبگنگ: ایک ابتدائی رہنما - 12ظاہر ہونے والی ونڈو میں، اس استثناء کا نام لکھیں جسے آپ شامل کرنا چاہتے ہیں، فہرست سے منتخب کریں اور OK پر کلک کریں : IntelliJ IDEA میں ڈیبگنگ: ایک ابتدائی رہنما - 13اس سے ہمارا پرائمر ختم ہوتا ہے کہ چیزوں کو کیسے ترتیب دیا جائے، لہذا اب ہم' کچھ مشق پر آگے بڑھیں گے۔

آئیے ڈیبگنگ نامی اس چیز کو کرتے ہیں!

میں خاندانی شہد کی مکھیاں پالنے والوں کی ایک لمبی قطار سے آتا ہوں، اس لیے میں نے ڈیبگنگ کی مثال دینے کے لیے جو پروجیکٹ بنایا ہے اس میں شہد کی مکھیوں کے امرت کو جمع کرنے، امرت کو شہد میں پروسیس کرنے، اور پھر شہد کے چھتے سے شہد حاصل کرنے کے ماڈل کو بیان کیا گیا ہے۔ دستاویزی README فائل کے مطابق ، جو پروجیکٹ کی روٹ ڈائرکٹری میں پایا جا سکتا ہے، ان تمام پھولوں کا متوقع برتاؤ جن سے امرت اکٹھا کیا جاتا ہے، جمع شدہ شہد کی مقدار (جو ڈبل کی شکل اختیار کرتا ہے ) کے نصف کے برابر ہے۔ جمع امرت. پروجیکٹ میں درج ذیل کلاسز ہیں:
  • مکھی - ایک عام ورکر مکھی
  • BeeQueen - ملکہ مکھی
  • شہد کی مکھیوں کے چھتے
  • ہنی پلانٹ - ایک شہد کا پودا (امرت کا ذریعہ) جس سے امرت اکٹھا کیا جاتا ہے۔
  • مین - یہ وہ جگہ ہے جہاں ہم تلاش کرتے ہیں public static void main()، وہ طریقہ جہاں سے عملدرآمد شروع ہوتا ہے۔
اگر ہم اس main()طریقہ کو چلاتے ہیں، تو ہمیں معلوم ہوتا ہے کہ ہمارا پروگرام نہ صرف شہد کی مقدار کا حساب نہیں لگاتا، بلکہ یہ ایک استثناء بھی کرتا ہے... IntelliJ IDEA میں ڈیبگنگ: ایک ابتدائی رہنما - 14ہمیں تحقیق کرنے اور اس بات کا تعین کرنے کی ضرورت ہے کہ مسئلہ کیا ہے۔ نچلے دائیں کونے میں موجود ٹریس اسٹیک سے، ہم دیکھ سکتے ہیں کہ RuntimeException اس پر پھینکا گیا تھا HoneyPlant.java:20: IntelliJ IDEA میں ڈیبگنگ: ایک ابتدائی رہنما - 15بس وہی ہے جس کے بارے میں ہم اوپر بات کر رہے تھے۔ آئیے main()ڈیبگ موڈ میں طریقہ کو چلا کر اس RuntimeException کو دیکھتے ہیں۔ main()ایسا کرنے کے لیے، طریقہ کے آگے IntelliJ IDEA میں سبز مثلث کے تیر پر کلک کریں ۔ IntelliJ IDEA میں ڈیبگنگ: ایک ابتدائی رہنما - 16نتیجے کے طور پر، ہم استثناء کے پھینکے جانے سے پہلے ہی پروگرام کو روک دیں گے اور ہمیں یہ آئیکن نظر آئے گا: IntelliJ IDEA میں ڈیبگنگ: ایک ابتدائی رہنما - 17IntelliJ IDEA میں ڈیبگنگ: ایک ابتدائی رہنما - 18تمام دستیاب معلومات حاصل کرنے کے لیے، ہمیں ڈیبگ سیکشن میں دیکھنے کی ضرورت ہے۔ اس میں ایک متغیر پین ہے جو ایپلیکیشن کے اس حصے میں دستیاب تمام متغیرات کو دکھاتا ہے:
  • امرت = 1.0؛
  • امرت کی صلاحیت = -1.0۔
مستثنیٰ پھینکنا معنی خیز ہے، کیونکہ شہد کے پودے میں امرت کی منفی مقدار نہیں ہو سکتی۔ لیکن ایسا کیوں ہو رہا ہے؟ بہر حال، 15-17 لائنوں میں، ہم چیک کرتے ہیں کہ آیا امرت کی سپلائی ختم ہو گئی ہے اور صفر واپس آتی ہے اگر یہ ہے:

	if (nectar == 0) {
   	     return 0;
}
لیکن مصیبت یہ ہے کہ ہم غلط متغیر کی جانچ کر رہے ہیں۔ یہ کوڈ میں ایک غلطی ہے۔ پھول میں دستیاب امرت کی مقدار کو چیک کرنے کے بجائے (جو نیکٹر کیپیسیٹی متغیر میں محفوظ ہے)، پروگرام طریقہ کے امرت پیرامیٹر کی قدر کو چیک کرتا ہے، جو کہ امرت کی مقدار ہے جو ہم پھول سے لینا چاہتے ہیں۔ یہ رہا! ہمارا پہلا بگ! اسے ٹھیک کرنے کے بعد، ہمیں درج ذیل کوڈ ملتا ہے:

	if (nectarCapacity == 0) {
   	     return 0;
}
اب main()طریقہ کو نارمل طریقے سے چلائیں (Run 'Main.main()')۔ اس میں کوئی رعایت نہیں ہے، اور پروگرام کام کرتا ہے: IntelliJ IDEA میں ڈیبگنگ: ایک ابتدائی رہنما - 19ایپلیکیشن مکمل ہونے تک چلتی ہے اور درج ذیل جواب دیتی ہے۔

"33.0 honey was produced by 7 bees from 2 honey plants"
اب سب کچھ ٹھیک ہو جائے گا، لیکن یہ جواب غلط ہے... README فائل کے مطابق ، امرت کو 2 سے 1 کے تناسب سے شہد میں تبدیل کیا جاتا ہے:

## Documentation
Presentation based on honey production.

**Note**: 2 units of nectar = 1 unit of honey
مرکزی طریقہ میں واضح طور پر دو شہد کے پودے ہیں جن میں بالترتیب 30 اور 40 یونٹ امرت ہیں۔ لہذا ہمیں بالآخر شہد کی 35 یونٹس کے ساتھ ختم کرنا چاہئے۔ لیکن پروگرام ہمیں بتا رہا ہے کہ ہمیں 33 ملے۔ باقی دو یونٹ کہاں گئے؟ آئیے معلوم کرتے ہیں! ایسا کرنے کے لیے، Main.main()لائن 28 پر طریقہ کار میں ایک بریک پوائنٹ سیٹ کریں، جہاں beeHive.populateHoney()کہا جاتا ہے اور main()طریقہ کو ڈیبگ موڈ میں چلائیں: IntelliJ IDEA میں ڈیبگنگ: ایک ابتدائی رہنما - 20ہم اس نکتے پر مزید تفصیل سے غور کریں گے۔ پروگرام نے لائن 28 پر عمل کرنے سے پہلے عمل کرنا بند کر دیا۔ نچلے حصے میں، ہم ڈیبگ سیکشن دیکھتے ہیں، جو چل رہی ایپلیکیشن کے بارے میں تمام دستیاب معلومات کو ظاہر کرتا ہے۔ جیسا کہ پہلے ہی ذکر کیا جا چکا ہے، ویری ایبل پین میں ایپلی کیشن کے اس حصے سے دستیاب تمام متغیرات اور اشیاء شامل ہیں۔ فریمز پین ان مراحل کو دکھاتا ہے جن سے ایپلیکیشن گزر رہی ہے — آپ پچھلے (فریمز) کے مراحل کو دیکھ سکتے ہیں اور تمام مقامی ڈیٹا دیکھ سکتے ہیں۔ پروگرام کو جاری رکھنے کے لیے، آپ F9 یا سبز آئیکن کو دبا سکتے ہیں، جیسا کہ ذیل میں دکھایا گیا ہے: IntelliJ IDEA میں ڈیبگنگ: ایک ابتدائی رہنما - 21پروگرام کو روکنے کے لیے، سرخ مربع پر کلک کریں: IntelliJ IDEA میں ڈیبگنگ: ایک ابتدائی رہنما - 22ڈیبگ موڈ میں ایپلیکیشن کو دوبارہ شروع کرنے کے لیے، تیر پر کلک کریں: IntelliJ IDEA میں ڈیبگنگ: ایک ابتدائی رہنما - 23مزید، آپ آگے بڑھ سکتے ہیں۔ دو کلیدوں کا استعمال کرتے ہوئے مرحلہ وار درخواست:
  • F8 - طریقوں میں قدم رکھے بغیر کوڈ کے ذریعے قدم اٹھائیں؛
  • F7 - کوڈ کے ذریعے قدم رکھیں اور طریقوں میں قدم رکھیں۔
beeHive.populateHoney()ہمارے معاملے میں، ہمیں طریقہ میں قدم رکھنے کے لیے F7 دبانے کی ضرورت ہے ۔ اس میں قدم رکھتے ہوئے، ہم حاصل کرتے ہیں: اب ہم اس طریقہ کار سے گزرنے کے لیے F8IntelliJ IDEA میں ڈیبگنگ: ایک ابتدائی رہنما - 24 استعمال کریں گے اور بیان کریں گے کہ اس میں کیا ہوتا ہے:
  • لائن 25 — Stream API کا استعمال تمام شہد کی مکھیوں سے امرت اکٹھا کرنے کے لیے کیا جاتا ہے۔
  • لائن 26 — نئے بنائے گئے شہد کو موجودہ شہد میں شامل کیا جاتا ہے۔
  • لائن 27 - ملکہ کے لیے شہد کے 2 یونٹ مختص کیے گئے ہیں۔
  • لائن 28 - یہ دونوں اکائیاں شہد کی کل مقدار سے ہٹا دی جاتی ہیں۔
  • لائن 29 - ملکہ یہ شہد کھاتی ہے۔
تو وہیں دو لاپتہ یونٹ گئے! ہیرے! ایک کاروباری تجزیہ کار سے بات کرنے کے بعد، ہم اس نتیجے پر پہنچے ہیں کہ README فائل میں ایک خامی ہے اور اسے اپ ڈیٹ کرنے کی ضرورت ہے۔ آئیے README فائل کو اپ ڈیٹ کریں:

## Documentation
Presentation based on honey production.

**Note**:
* 2 units of nectar = 1 unit of honey
* The queen bee eats 2 units of honey every time when beehive is replenished with honey.
ہم کر چکے ہیں۔ ہم نے پائے جانے والے تمام کیڑے ٹھیک کر دیے ہیں۔ ہم سکون کے ساتھ اسمگ نظر کے ساتھ آگے بڑھ سکتے ہیں، کافی کے گھونٹ پی سکتے ہیں، اور Stack Overflow CodeGym پر مضامین پڑھ سکتے ہیں :)

آئیے خلاصہ کرتے ہیں۔

اس مضمون میں، ہم نے سیکھا:
  • ہر ایک کے کام میں غلطیاں ہوتی ہیں اور ڈیبگنگ ان کو ٹھیک کرنے کا ایک بہترین طریقہ ہے۔
  • بریک پوائنٹ کیا ہے اور کس قسم کے بریک پوائنٹس ہیں۔
  • استثنیٰ بریک پوائنٹ کیسے ترتیب دیا جائے۔
  • ڈیبگ موڈ میں کوڈ کے ذریعے جانے کا طریقہ

پڑھنے کے لیے مضمون

تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION