[؟ DAN ARMADARAS؟] ہیلو، میں [ہوں؟ ڈین Armadaras؟]. آج، ہم جا رہے ہیں ٹھیک دیکھ کر کیا جائے. نہ صرف ہم کرنے جا رہے ہیں کچھ تراکیب کے بارے میں بات، بلکہ ہم پر نظر کرنے جا رہے ہیں خصوصیات میں سے کچھ موجود اجازت دیتے ہیں کہ CS50 IDE کے اندر اندر آپ آسانی سے ایک پروگرام ڈیبگ. صرف ایک مثال غلط جا سکتے ہیں کہ کچھ اور یہ اصل میں کچھ ہے ہم نے پہلے ہی سے پہلے دیکھا ہے کہ. اس صورت میں، یہ ایک سی پروگرام ہے کہ، صارف کی طرف سے ایک عددی قبول دو کی طرف سے تقسیم کرتا ہے اور فراہم کرتا ہے واپس صارف کو پیداوار. اب ہم نے دیکھا ہے سے پہلے لیکچر میں، ہم یہ اصل سبب بن جائے گا معلوم ہے کہ تقسیم کے مسائل کی مخصوص اقسام ہم طاق نمبروں کی ہے جب. خاص طور پر، ہم صرف دور پھینک دونگا دشملو نقطہ کے بعد کچھ. اب ہم جانتے ہیں کہ اس کیس ہو. اور ہم نے اسے چلاتے ہیں تو، ہم اس بات کی تصدیق کر سکتے ہیں تالیف کی طرف سے سب سے پہلے ہمارے شکوک و شبہات،،. اور پھر، چل رہا ہے کی طرف سے اور طاق میں داخل. یہ کوئی نئی بات نہیں ہے. لیکن یہ اصل میں ایک ہے ایک مسئلے کی مثال ہے کہ ایک بڑی پروگرام کے اندر اندر موجود کر سکتے ہیں اس کو ٹریک کرنے کے لئے مشکل ہو جاتا ہے. ہم کیا مسئلہ اگرچہ ہم جانتے ہیں ، معاملے کی حقیقی بنیادی نکتہ ہے شناخت کرنے کی کوشش ہو سکتا ہے خاص طور پر جہاں خرابی اس وقت ہوتی، کیا ہے کہ مسئلہ کی شناخت ہے، اور پھر اس کا تعین. تو ایک مثال کے طور پر فراہم کرتے ہیں کچھ ہو سکتا ہے کیا ہم پہلے ہی جانتے ہیں لیکن دفن کیا جا سکتا ہے کوڈ کے دیگر عناصر کے اندر اندر. تو اس دوسرے ذریعہ کھولنے ایک مثال کے طور پر کوڈ فائل، اس تقسیم مسئلہ ہے ایک بڑی پروگرام کا حصہ. اب بھی تھوڑا سا ہو سکتا ہے بٹ تدبیر، اور ہم آسانی سے کرنے کے قابل ہو سکتا ہے خاص طور پر، اس کی شناخت ہم صرف اس پر بحث کر رہے ہیں. لیکن ہم یہ ہے کہ پتہ کر سکتے ہیں مسئلہ ایک بڑے پیمانے پر موجود کر سکتے ہیں. اب میں اس مرتب اور تو یہ ایک طاق میں داخل چلانے، ہم خاص طور پر نہیں ملتا ہے کہ دیکھ سکتے ہیں ہم توقع کر سکتے ہیں اس کی پیداوار. اس خاص معاملے میں، ہم کہہ سکتے ہیں کہ ہم تعداد کے شمار کرنے کے لئے چاہتے ہیں ایک سے کچھ مخصوص تعداد کے لئے. اور اگر ہم دیکھ سکتے ہیں مسائل کی ایک قسم ہے ہم لکھنا کر رہے ہیں یہاں تو، بس، 0 اور 1 ہم 5 کے ایک ان پٹ فراہم کرتے ہیں جب. تو ہم نے پہلے ہی جانتے ہیں کہ یہاں ایک مسئلہ ہے. لیکن ہم واضح طور پر معلوم نہیں کر سکتے ہیں جہاں اس معاملے اصل میں موجود. طریقوں میں سے اب ایک کہ ہم اس کو ٹھیک کرنے کی کوشش کر سکتے ہیں ہم نے ایسی چیز ہے پہلے سے متعارف کرایا گیا. ہم صرف ایک بڑے پیمانے پر استعمال کر سکتے. لائن 14 پر، ہم نے اس printf تقریب، جو ہمیں ریاست باہر پرنٹ کرنے کی اجازت دیتا ہے معلومات کے مختلف ٹکڑے ٹکڑے کر کے. اور یہ کچھ ہے کہ آپ کو آپ کے پروگرام کے اندر اندر بیعانہ چاہئے ہے بالکل وہی جو پتہ کرنے کی کوشش کریں کوڈ کے مختلف لائنوں میں ہو. تو یہ نہیں ہے یہاں تک کہ اگر حتمی نتائج کہ ہم اصل میں سے باہر پیدا کرنے کے لئے چاہتے ہیں اس پروگرام، ہم اب بھی کچھ ڈبگ ہو سکتا ہے بیانات ہم کہاں پتہ لگانے کی کوشش کر سکتے ہیں خاص طور پر کیا اپنے کوڈ کے اندر کیا ہو رہا ہے. تو اس معاملے میں، میں لونگا ڈیبگ ٹیگ کے ساتھ printf. اس صورت میں، یہ ہے صرف ایک ڈبگ سٹرنگ میں ڈال تو یہ ہو جاتا ہے کہ ہوں کہ میرا کوڈ کی پیداوار میں بہت واضح کیا اس میں ظاہر کرنے کے لئے چاہتے ہیں. نمبر یہاں اور پیداوار ہم حساب ہے. اس صورت میں، میں طاقت خاص طور پر جاننا چاہتا ہوں جو اس سے پہلے ہو رہا ہے اور کچھ مخصوص حساب کے بعد. تو میں نے پہلے ایک printf استعمال کر سکتے ہیں اور کوڈ کے اس لائن کے بعد. اس صورت میں، میں بھی کر سکتا ہوں یہ تھوڑا سا زیادہ واضح کر دینا پہلے ڈبگ کہہ کر اور ڈبگ اس کے بعد میں اس کے ساتھ خود کو الجھانے نہیں ہے ایک جیسی نظر آتے ہیں کہ ایک سے زیادہ لائنوں. اب ہم اس اور چلانے تو recompile تو یہ، ایک بار پھر پانچ طرح ایک بڑی تعداد میں داخل ہم دیکھ سکتے ہیں کہ اب سے پہلے اور بعد کی پیداوار اور ہم نے ایک واضح نہیں کیا ہے کہ تلاش ڈویژن یا واضح تعداد کے ہونے کیا ہم واقعی چاہتے ہیں کہ. اب اس صورت میں، یہ ہے نہیں واقعی ایک واضح کی پیداوار. یہ واقعی میں ایک واضح نتیجہ نہیں ہے کہ ہم اس مخصوص پروگرام سے باہر کرنا چاہتے. اور یہ ایک، ایک بار پھر، ہے تھوڑا سا تدبیر. لیکن، شاید، چیزوں میں سے ایک ہے تفصیلات نے کہا کہ اگر ہم کر سکتے ہیں ہم کی طرف سے تقسیم کرنا چاہتی ہیں کہ 2 اور تو دوسرے الفاظ میں 1-- شامل، اس کے بعد ہم up-- منہاج القرآن کرنا چاہتے ہیں ہم کر سکتے ہیں جانتے ہیں کہ ہو سکتا ہے اس صورت میں، اس مخصوص بات کرتے ہیں. اب یہاں ہم ہو جائے گا معلوم ہے کہ ہماری آدھی تعداد میں 1 کا اضافہ کرنے کے قابل ہو. اس recompile ہیں اور یہ اس بات کی تصدیق ہم چاہتے ہیں کہ جس طرح برتاؤ کر رہی ہے. اب ہم پہلے دیکھ سکتے ہیں کہ ہونے، ہم نمبر 5 ہے. کے بعد، ہم، نمبر 3 ہے ہمارے تصریح کے مطابق، ہم کیا کرنا چاہتے تھے ہے. لیکن ہم پر نظر ڈالیں تو یہاں پیداوار، ہم کر سکتے ہیں ہم ایک اور ہو سکتا ہے کہ کو دیکھنے کے ہے جس میں مکمل طور پر بگ، ہم 0 سے ہماری شمار شروع کر رہے ہیں. اب ایک بار پھر، یہ کچھ ہے ہم نے ماضی میں دیکھا ہے کہ اور ہم بہت آسانی سے حل کر سکتے ہیں. لیکن اس معاملے میں، ہم بھی فائدہ تھا printf بیان کا استعمال کرتے ہوئے براہ راست لوپ کے لئے کے اندر خاص طور پر جہاں جاننا اس غلطی کو جاری کیا گیا تھا. تو printf بیانات ہیں کی مدد کرنے میں بہت ہی مفید تم کہاں کا تعین، خاص طور پر آپ کے منبع کوڈ میں، ایک مخصوص غلطی واقع ہے. اور یہ احساس کرنا بھی اہم ہے کہ، ہم کوڈ لکھ رہے ہیں کے طور پر، ہم مفروضات ہو سکتا ہے پروگرام کی حالت کے بارے. یا ہم مفروضات ہو سکتا ہے پروگرام کے کس حصے کے بارے میں اصل میں صحیح یا غلط ہے جب بعد میں ہم اس پروگرام پر تعمیر کے طور پر اور یہ ایک کا حصہ بنا پیچیدہ اور وسیع تر پروگرام ہم نے کچھ پہلو کہ احساس ہے کہ کہ اصل میں چھوٹی گاڑی ہے. printf کے استعمال کرتے ہوئے واقعی مدد کر سکتے ہیں کو محدود اور شناخت پروگرام کے علاقوں کہ نہیں کر سکتے ہیں بالکل جس طرح برتاؤ کیا جائے کہ ہم ہمارے مفروضات کی بنیاد پر، کی توقع. لیکن دوسری اوزار موجود ہے دستیاب، کے ساتھ ساتھ، کہ ہمیں اعداد و شمار کرنے کی کوشش کرنے کی اجازت دیتے ہیں جہاں ایک خرابی واقع ہے باہر اور بھی، خاص طور پر، کیا چیزیں پروگرام کے اندر ہو رہی ہیں. تو printf کا استعمال بہت ہے مفید جب ہم چاہتے ہیں کے مخصوص علاقوں کی نشاندہی کچھ بگ ہے کہ ایک پروگرام. لیکن یہ بھی ہو جاتا ہے تھوڑی دیر کے بعد تکاؤ. اس صورت میں، یہ ایک ہے نسبتا آسان پروگرام صرف ایک یا دو متغیر کے ساتھ. اور یہ ہمارے لئے بہت آسان ہو جاتا ہے ان متغیرات کی قدر کو پرنٹ بڑے پروگرام کے تناظر میں. لیکن ہم ایک مختلف ہو سکتا ہے بہت سے متغیر ہے کہ پروگرام. اور یہ بہت نہیں ہو سکتا printf استعمال کرنے کے لئے اتنا آسان کیا ہو رہا ہے کا اندازہ کرنے کی کوشش کریں ان متغیرات میں سے ہر ایک کے لئے پروگرام کے طور پر عمل کیا جاتا ہے. موجود ہے کہ ایک پروگرام ہے ٹھیک کرنے والا کھولتا پروگرام کہا. اس صورت میں، ایک ہے کہ ہم استعمال، GDB GNU ٹھیک کرنے والا کھولتا ہے، یا کہ ہمیں اندرونی معائنہ کرنے کی اجازت دیتا ہے ایک بہت زیادہ میں ایک پروگرام کے کام کاج تفصیلی طریقہ. ہم اصل میں پھانسی کر سکتے ہیں کمانڈ لائن سے GDB یہاں صرف GDB اور ٹائپ کی طرف سے ہم ڈیبگ کرنا چاہتے ہیں کہ حکم. اس صورت میں، شمار. اب اس صورت میں، ہم اس کو دیکھ سکتے ہیں GDB کا کہنا ہے کہ ایک فوری طور پر ہمیں لاتا ہے. اور ہم اصل میں کر سکتے ہیں GDB کے حکم دیتا ہے عملدرآمد اصل کے عمل کو شروع کرنے کے لئے پروگرام، بعض مقامات پر اس کو روکنے کے، متغیر کا اندازہ اور متغیر کا معائنہ کہ پروگرام ریاست میں موجود کہ خاص طور پر اس وقت، اور تو اور تو آگے. یہ ہمارے لئے طاقت کا ایک بہت فراہم کرتا ہے. لیکن یہ صرف اس لئے ہوتا ہے یہ بھی CS50 IDE ایک GUI یا صارف فراہم کرتا ہے GDB کے لئے انٹرفیس ہے کہ ہمیں ضرورت کے بغیر ایسا کرنے کی اجازت دیتا جو کمانڈ لائن انٹرفیس یا بالکل بھی. میں اس تک رسائی حاصل کر سکتے ہیں اس طرح ڈیبگ بٹن کا استعمال کرتے ہوئے ہے CS50 IDE کے سب سے اوپر. اب ماضی میں، ہم نے کیا ہے دیکھا ہم کمانڈ کا استعمال کرتے ہیں لائن مرتب اور پھر ایک پروگرام کو چلانے کے. ڈیبگ بٹن کرتا ان اقدامات کے دونوں. لیکن یہ بھی لے آئے گا اب تک حق پر ٹھیک کرنے والا کھولتا ٹیب کہ ہمیں ایک قسم کا معائنہ کرنے کی اجازت دیتا ہے پروگرام کی خصوصیات میں سے کے طور پر عمل کیا جاتا ہے. میں اس میں، ڈیبگ کلک کریں کیس، اس کو لے آئے گا کنسول میں ایک نیا ٹیب بہت نچلے حصے میں ونڈو. اور تم اس ٹیب ہے کہ دیکھ سکتے ہیں سب سے اوپر پر کچھ معلومات. اور ہم بڑی حد تک اس کو نظر انداز کر سکتے ہیں. لیکن چیزوں میں سے ایک ہم محسوس کرنا چاہتا ہوں کہ یہ نتائج کہ ایک ہی بات ہے کہ ہم ہم بنانے چلاتے کرنے کی کوشش کی تو ملے گا ٹرمنل ونڈو میں سی پروگرام. یہاں، ہم اس بجنا چل رہا ہے دیکھ سکتے ہیں، اور اس پرچم کی ایک قسم ہے، اور یہ ہمارے count.c فائل مرتب ہے جس وقت منتخب ٹیب تھا کہ میں ڈبگ مارا. تو اس کی وجہ سے بہت مفید ہے اب اس ڈیبگ بٹن کا استعمال، ہم ایک ہی وقت کے بعد مرتب کر سکتے ہیں اور پروگرام پر عمل ہے کہ ہم اصل میں کو چلانے کے لئے چاہتے ہیں. ہے کہ جھنڈے میں سے ایک اہم، اس معاملے میں، ہم اصل میں استعمال کر رہا ہوں سب سے طویل وقت کے لئے بلکہ کچھ ہاتھ کیا لہراتے ہوئے [اشراوی]، جس یہیں اس میں سے ایک ہے. بجنا میں، اس کا کہنا ہے کہ -ggdb3. اس صورت میں، ہم کیا ہیں بجنا بتا، ہمارے سنکلک، ہم اپنے پروگرام مرتب کرنے کے لئے چاہتے ہیں. بلکہ کیا ہیں فراہم کرتے ہیں نامی علامت معلومات سنکلک اصل میں تک رسائی حاصل ہے تاکہ بنیادی معلومات کا ایک بہت کچھ کرنے کے پروگرام کے اندر اندر موجود. مزید خاص طور پر، تعداد میں ہے کہ افعال میں سے، ان کے افعال میں نام، متغیر، اقسام ان متغیرات، اور ایک مختلف قسم کے ہیں کہ ٹھیک کرنے والا کھولتا میں مدد ہے کہ دوسری چیزوں کے اس آپریشن کو انجام دینے کے. اب کچھ اور بھی ہے اس کا ذکر کرنا ضروری ہے جب ہم چل رہا ہے بحث کر رہے ہیں اس طرح میں ایک پروگرام. یہ اصل میں ہے کہ نوٹس ہمارے کنسول میں ایک نیا ٹیب پرورش نیچے کے ساتھ ساتھ. ہم اب کوئی بات چیت کرنا پڑے براہ راست ٹرمنل ونڈو کے ساتھ. لیکن اس نئے ٹیب ہے اصل میں ایک ٹرمینل ونڈو. یہ صرف چلانے کے لئے مخصوص ہے ہم پیدا کیا ہے کہ پروگرام. میں، نچلے حصے میں نوٹس کچھ پیداوار کے ساتھ مجموعہ سنکلک اور GDB بجنا کی طرف سے، ہم بڑی حد تک نظر انداز کر سکتے ہیں، یہ اصل کی پیداوار سے پتہ چلتا ہے بہت نچلے حصے میں ہمارے پروگرام. اب یہ محسوس کرنا اہم ہے کہ اصل میں اس ایک ونڈو آپ کو دکھائے گا آپ کے پروگرام کی طرف سے پیداوار بلکہ ان پٹ کو قبول کر سکتے ہیں اس پروگرام کے لئے، کے ساتھ ساتھ. تو کا کہنا ہے کہ نوٹس ایک بڑی تعداد درج کریں، جو ہم تھا کہ ایک ہی پیداوار ہے پہلے ٹرمنل ونڈو میں تھا. لیکن یہ اب اس نئے ٹیب میں دکھایا گیا ہے. میں ان پٹ ایک بڑی تعداد کر سکتے ہیں. اور یہ اصل میں کریں گے تقریب ہم توقع کے طور پر ہمارے ڈبگ دکھا، پیداوار، چھوٹی گاڑی ہو سکتا ہے اس کی پیداوار، کے طور پر ہم نے پہلے دیکھا ہے. اور بہت نچلے حصے میں، یہ اصل میں کچھ اضافی پیداوار ہے جی ڈی پی کی طرف سے صرف یہ کہہ رہی اس پروگرام مکمل کر لیا ہے. اب آپ اس میں دیکھا کے طور پر کے ذریعے خاص طور پر چلائیں، یہ خاص طور پر نہیں تھا مفید بھی وجہ سے ہم نے اگرچہ ٹھیک کرنے والا کھولتا مینو آئے اپ، یہ اب بھی ایک چلانے پروگرام تھا. کوئی وقت اصل میں یہ کیا ہمارے لئے پر عملدرآمد روک تمام کا معائنہ کرنے کے قابل ہو جائے متغیر کے اندر اندر موجود. کچھ اور بھی ہے ہم نے آرڈر میں کرنا پڑتا ہے کہ ہم چاہتے ہیں کہ اس کی شناخت کرنے کے لئے حاصل کرنے کے لئے GDB پروگرام کے عمل کو روکنے کے لئے اور صرف اسے آگے بڑھنے کی اجازت نہیں عام طور پر ہم کسی بھی دوسری صورت میں کریں گے کے طور. پھانسی کو روکنے کے کرنے کے لئے، کچھ مخصوص لائن پر، ہم کیا ہے تخلیق کرنے کی ضرورت ایک بریک پوائنٹ بلایا. اور ایک وقفے نقطہ بہت آسانی سے پیدا کیا ہے اس میں اپنے ماؤس لے کر IDE CS50 اور بائیں براہ راست کلک کچھ مخصوص لائن نمبر کی. مجھے لگتا ہے کہ ایسا ایک بار، ایک سرخ ڈاٹ اشارہ کرتا ہے جس، ظاہر ہوتا ہے کہ لائن اب ایک وقفے نقطہ ہے. اور میں GDB چلانے کہ اگلی بار، یہ کہ وقفے نقطہ پر عملدرآمد روک دے گا یہ کوڈ کا اس لائن تک پہنچ جاتا ہے. اب یہ ایک اہم ہے بات کا احساس کرنے کے لئے یہ نہیں ہے کہ ضروری کیس ہے کہ کوڈ کی ہر لائن اصل میں قابل رسائی ہے. میں ایک تقریب پیدا کرنے کے لئے تھے یہاں، مثال باطل ایف کے لئے اور ہیلو یہاں ایک پرنٹ لائن کرتے world-- میں اس تقریب کو فون نہیں ہے تو، یہ معاملہ ہو جائے گا کہ، میں یہاں ایک بریک پوائنٹ قائم کر دیں تو، تقریب میں بلایا جائے کبھی نہیں کرے گا. اور اس وجہ سے، اس خاص طور پر بریک پوائنٹ اصل میں روک کبھی نہیں کرے گا پروگرام پر عملدرآمد. تو میں صحیح طریقے سے تشکیل دے کہتے ہیں کہ کوڈ کے کچھ لائن پر ایک بریک پوائنٹ کہ اصل میں پھانسی دے دی جائے گی. اب اس صورت میں، یہ ہے مرکزی تقریب میں پہلی لائن. تو یہ یقینی طور پر معاملہ ہو جائے گا کہ، میں ان پر عملدرآمد شروع کے طور پر جلد کے طور پر، بہت پہلے لائن تک پہنچ جائے گا. GDB پر عملدرآمد کو روکنے کے گا. اور پھر، میں کرنے کے قابل ہو جائے گا ٹھیک کرنے والا کھولتا کے ساتھ بات چیت. آپ کے طور پر ایک سے زیادہ لائنوں مقرر کر سکتے ہیں اگر آپ چاہیں تو، breakpoints کے. ہم نے بھی ایک لائن تشکیل دے سکتے ہیں یہاں کے کوڈ کا اس علاقے میں کہ پہنچ نہیں کیا جائے گا. اور ہم بھی مزید نیچے ایک مقرر کر سکتے ہیں. وجہ یہ ہے کہ ہم کریں گے ہم کریں گے ایسا کرنا چاہتے ہیں تھوڑا سا میں جانے صرف ایک لمحے میں تفصیل. تو اب کے لئے، مجھے صرف دو غیر فعال ان اضافی وقفے پوائنٹس ہم کیا ہوتا ہے کو دیکھنے کے کر سکتے ہیں تاکہ میں ایک وقفے ہے جب اپنے پروگرام میں نقطہ. میں نے کر دیا ہے کچھ اس پروگرام میں تبدیلی. تو میں نے اسے بچانے کے لئے کی ضرورت ہے. میں ڈیبگ پر کلک کریں گے میں کر سکتے ہیں تاکہ تالیف شروع اور پھر ٹھیک کرنے والا کھولتا کی پھانسی. ہم دیکھیں گے، کہ لمحات کے بعد ہم وقفے کے طور پر منتخب کیا ہے کہ لائن نقطہ پیلے رنگ میں روشنی ڈالی ہے. ہم نے بھی میں محسوس کر سکتے ہیں ڈیبگ پینل میں اوپری دائیں روکنے آئکن تبدیل کر دیا ہے کہ ایک چھوٹا سا کھیل آئکن میں. یہ ہم کو روکنے کا مطلب ہے کہ پھانسی، اس خاص معاملے میں. اور کھیل کے بٹن پر گا مارنے ہمیں عملدرآمد دوبارہ شروع کرنے کی اجازت دیتے ہیں اس مخصوص نقطہ پر. دیگر کے ایک جوڑے کی ہے کہ نوٹس اس ڈبگ پینل میں دستیاب بٹن، اس کے ساتھ ساتھ. مجھ سے کی اجازت دیتا ہے، زیادہ قدم کوڈ میں سے ایک لائن کو پھانسی اور اس لائن کو پھلانگنا اس صورت میں اگلے ایک، جس،، printf کے مطلب ہو گا بیان پھانسی دے دی ہے. اور اس وقت کو روکنے کے گا تو جیسے 13 پر عملدرآمد،. اور یہ بھی ایک قدم ہے تقریب میں جس میں دوسرے پیدا کیا ہے تو مفید ہے دوسری جگہوں پر منبع کوڈ میں کام کرتا ہے. اور میں میں قدم کرنا چاہتے ہیں ان افعال کی بجائے مجموعی طور پر اس تقریب کو پھانسی. لیکن ہم قدم پر زیادہ نظر آئے گا صرف ایک لمحے میں تقریب میں. اب کچھ دوسری چیزوں کے نوٹس اصل میں اس ڈبگ پینل کے اندر موجود ہیں. ہم اس پینل کہا جاتا ہے جو ہمیں پتہ چلتا ہے، اسٹیک کال بالکل ہم کہاں ہیں. اس صورت میں، ہم اندر ہیں مرکزی تقریب کے. ہمارا سکرپٹ count.c کہا جاتا ہے. اور ہم پر ہونا ہو 13، کالم ایک، جس کیا روشنی ڈالی علاقے خاص طور پر ہے ماخذ کوڈ کے طور پر ساتھ ساتھ، کی طرف اشارہ کرتا. اب یہ بھی پتہ چلتا ہے کہ محسوس کریں مقامی متغیر سیکشن کے تحت متغیرات میں سے سب کہ اس تقریب کے اندر اندر موجود. یہ نوٹ کرنا اہم ہے متغیرات میں سے سب کہ اس مقامی متغیر میں دکھایا جائے گا ایک تقریب کے اندر اندر سیکشن، یہاں تک کہ وہ بیان کر رہے ہیں اس سے پہلے. ہم ایک متغیر ہے کہ یہاں دیکھ سکتے ہیں NUM بلایا، 0 کے ایک پہلے سے طے شدہ قیمت ہے، اور یہ قسم int ہے. اب ہم اصل میں ابتدا سے پہلے ان متغیرات میں سے سب، ہم ضروری نہیں ہیں 0 کی قیمت کو دیکھنے کے لئے بات کی ضمانت. اور دیگر پھانسی پر منحصر ہے آپ کارکردگی کا مظاہرہ کیا ہے کہ اور آپ کی میموری جب ریاست آپ اصل میں اس پروگرام چلاتے ہیں، آپ کو تلاش ہے کہ ہو سکتا ہے 0 کی اقدار نہیں دیکھ رہا ہوں اور، کے بجائے، کسی دوسرے پاگل تعداد. لیکن اس کے بارے میں فکر نہ کرو. جب تک متعلقہ ہونے نہیں جا رہا ہے آپ اصل میں قدر کی ابتدا. اب اس صورت میں، ہم دیکھ سکتے ہیں کہ میں نے کچھ نتائج کارکردگی کا مظاہرہ کیا. اور میں، اب، پر عملدرآمد روک دیا گیا ہوں. لیکن اس معاملے میں، کیا مجھے سچ میں کرنا چاہتے ہیں اس لائن پر قدم کرنے کے لئے ہے کوڈ کی تو میں نے اصل کر سکتے ہیں کہ int کے لئے صارف کے سوال کہ ہم اپنے پروگرام میں استعمال کرنا چاہتے. اب اس صورت میں، جب میں، نوٹس پھلانگنا مارا اس کی بجائے روک یا دوبارہ شروع کریں بٹن اس توقف کے بٹن کو تبدیل کر دیا گیا اس کوڈ کو اصل عمل ہے کیونکہ. کیا ہو رہا ہے ٹھیک ہے اب یہ ہے ان پٹ کے لئے ہمارے لئے کچھ معلومات انتظار ہم اپنے پیداوار متن کی طرف سے دیکھ سکتے ہیں کے طور پر بہت نچلے حصے میں. تو اب، یہ وہ جگہ ہے اصل میں روک دیا گیا نہیں، یہاں تک کہ یہ اگرچہ، کی طرح، ظاہر ہوتا ہے کچھ نہیں ہو رہا ہے کیونکہ ہونا. لیکن یہ صرف اس لئے ہوتا ہے کہ 13 پر اپنے مخصوص کیس، میں صارف کی ان پٹ کے لئے انتظار کر رہا ہوں. اور اس طرح GDB کا معائنہ کرنے کے قابل نہیں ہے اس کے طور پر ایک پروگرام چلا رہا ہے. میں کچھ داخل ہے کہ اب اگلی بار ان پٹ تو میں، اس نمبر 5 میں داخل ہوں گے ہم میں دیکھا ہے کے طور پر مارا واپس past--، اور ہم کہ، فوری طور پر، GDB پآساس نوٹس اور، ایک بار پھر، اگلی لائن پر روشنی ڈالی گئی. لیکن ایک کے طور پر، اب اس نوٹس ہماری ایک قدر inputting کی کا نتیجہ، ہم اندر اس قدر کو اپ ڈیٹ کیا ہمارے مقامی متغیر، کی جس واضح طور پر معلوم کرنے کے لئے بہت مفید ہے کیا اس نمبر میموری میں تھا. اب میں اس پروگرام کو جاری رکھنے کی اجازت دے سکتا ہے اس پر عملدرآمد کے آخر تک کھیل دوبارہ شروع کریں مارنے کی طرف سے. ہم بہت جلد دیکھ سکتے ہیں کہ پروگرام ختم عمل کرتا ہے اسی کی پیداوار اس کے ساتھ ہم پہلے تھا، ٹھیک کرنے والا کھولتا بند، اور اب اس پروگرام مکمل طور پر بند کر دیا ہے. میں ظاہر کے لئے کہ دیکھ کے مقاصد کیا ہم اصل میں دوبارہ شروع مارا جب ہوتا ہے. لیکن ہم اصل میں کرنے جا رہے ہیں اس پروگرام میں واپس جانا چاہتی ہوں ہم ڈیبگ کرنے کی کوشش کر سکتے ہیں تاکہ خاص طور پر کیا ہو رہا ہے. میں debugger استعمال کر رہا ہوں کہ اب، میں مئی ان ڈبگ printf بیانات کی ضرورت نہیں. میں کروں گا کے طور پر تو میں نے ان کو ختم کر سکتے ہیں اب صرف ہمارے آسان کوڈ میں واپس جانے کے لئے ہم ایک لمحے پہلے تھا کہ. اب مجھے بچانے کے لئے جب پروگرام اور اس پر عمل، یہ، ایک بار پھر، کہ ابتدائی میں جائیں گے میں 11 لائن پر تھا اس نقطہ کو توڑنے. اور میں معائنہ کرنے کے لئے قابل ہو جائے گا میری متغیر میں کرنا چاہتا ہوں کے طور پر. یہ صرف اس لئے اس ایسا ہوتا ہے حصہ، بہت دلچسپ نہیں ہے اور میں جا رہا ہوں معلوم ہے کہ اس بیان سے باہر پرنٹ کرنے کے لئے. ایک نمبر درج کریں. اور پھر، میں جا رہا ہوں معلوم ہے کہ کہ عددی کے لئے صارف سے پوچھنا. تو شاید، میں نے اصل میں منتقل کرنا چاہتے ہیں میرے نیچے تھوڑا سا مزید نقطہ وقفے. تم وقفے پوائنٹس ختم کر سکتے ہیں براہ راست، پھر، کلک کر اس لائن تعداد کے بائیں. وہ لال ڈاٹ کا اشارہ، غائب ہو جائے گا کہ بریک پوائنٹ اب چلا گیا ہے کہ. اب اس صورت میں، پر عملدرآمد روک دیا گیا ہے. اور اس طرح یہ اصل میں نہیں جا رہا ہے کہ خاص طور پر مثال کے طور پر میں دوبارہ شروع. لیکن میں نے ایک وقفے مقرر کر سکتے ہیں تھوڑا سا بعد موڑ. اور اب میں دوبارہ شروع جب میرے کوڈ، یہ دوبارہ شروع کریں اور بتائیں گے کہ بریک پوائنٹ کے نقطہ. ایک بار پھر، میں دوبارہ شروع مارا. کچھ ہو رہا ہے کی طرح نہیں لگ رہا ہے. لیکن وہ میری وجہ سے ہے کوڈ ان پٹ کے لئے انتظار کر رہا ہے. میں نے ایک نمبر 5 میں داخل درج کریں مارا، اور کرے گا اب اگلے بریک پوائنٹ مارا جائے گا. اب اس صورت میں، اس کوڈ کے مطابق ہے کہ، پہلے، ہم جانتے تھے چھوٹی ہونا ہوا. تو کیا ہوتا ہے کا اندازہ دو وقت میں اس مخصوص نقطہ پر. ایک لائن پر روشنی ڈالی ہے تو اس لائن ابھی تک پھانسی نہیں کیا گیا ہے. تو اس صورت میں، ہم دیکھ سکتے ہیں میں ایک بڑی تعداد ہے، جو میں نامی ایک عدد صحیح ہے ایک قیمت 5 ہے کہ NUM. اور میں کارکردگی کا مظاہرہ کیا کرنے جا رہا ہوں اس نمبر پر کچھ ریاضی. میں اس پر قدم تو، ہم کر سکتے ہیں NUM کے لئے اس قدر محسوس کے مطابق میں تبدیل کر دیا گیا ہم اصل میں کیا ہے کہ ریاضی. اور اب ہم ہیں کہ اندر لوپ کے لئے اس کے بارے میں یا اب اس لوپ کے لئے خود روشنی ڈالی ہے، ہم ایک نئے ہے کہ دیکھ متغیر ہے کہ میں کہا جاتا لوپ کے لئے اس میں استعمال کیا جا کرنے کے لئے کی جا رہی ہے. اب جب کہ میں نے پہلے یاد کبھی کبھی آپ کو ہیں کہ اس کا ذکر پاگل کی کسی قسم کو دیکھنے کے لئے جا رہا اس تعداد سے پہلے سے طے شدہ طور پر تعداد یا یہ کہ متغیر ہے اصل initialized ہے. ہم خاص طور پر دیکھ سکتے ہیں کہ یہاں اس متغیر میں نہیں ہے جس میں، میں بلایا ابھی initialized کیا گیا اجاگر کرنے کا وقت. لیکن ہم اس سے کچھ تعداد ہے کہ دیکھ سکتے ہیں ہم اصل میں توقع نہیں ہے کہ. ٹھیک ہے. اس کے بارے میں فکر مت کرو ہم اصل میں نہیں ہے کیونکہ میں جب تک اس نمبر سے initialized اس لائن اور قیمت پھلانگنا میں قدر 1 سے initialized کیا گیا ہے. تو ہے کہ اصل میں ہے کہ کو دیکھنے کے لئے کیس، کے دوران قدم دو. اب ہم دیکھ سکتے ہیں کہ اس لائن کو پھانسی دے دی گئی ہے. اور اب ہم کو اجاگر کر رہے ہیں اس printf لائن. اور اب ہم کس طرح ہماری اقدار کو دیکھنے کے کر سکتے ہیں میں نے اور 3 وقت کے ساتھ تبدیل کر دیا ہے. یہ حقیقت میں، ایسا کرنے کے لئے بہت مفید ہے، بار بار لائنز سے زیادہ قدم ہے. اور تم کیا اصل میں حاصل کر سکتے ہیں آپ کے لئے لوپ کے اندر کیا ہوتا ہے اور کیا ہوتا ہے اندر لوپ کے لئے اس کے متغیر اس پروگرام پر عملدرآمد کے طور پر ایک وقت میں ایک قدم اس وقت ہوتی ہے. اب اس نقطہ پر، مجھے صرف کافی سے زیادہ اضافہ کر دیا اب میں اپنے پروگرام کے اختتام پر ہوں. میں اس پر قدم ہیں، تو یہ اصل پر عملدرآمد روک ہم نے ماضی میں دیکھا ہے. تو، مجھے ایک بار پھر، اس کو دوبارہ شروع کرتے ہیں میں کچھ اور باہر کی طرف اشارہ کر سکتے ہیں، اس کے ساتھ ساتھ. اس صورت میں، یہ ہے اب ایک بار پھر، مجھ سے پوچھ، ایک بڑی تعداد، جس میں، ایک بار پھر، میں داخل ہوں گے. لیکن اس وقت، میں داخل کرنے کے لئے جا رہا ہوں ایک بڑی تعداد تاکہ لوپ کے لئے زیادہ بار iterate گا. اس صورت میں، میں جا رہا ہوں 11 کی قیمت درج کرنے کے لئے. اب ایک بار پھر میں نے مقرر کیا تھا کیونکہ لائن 15 پر ایک بریک پوائنٹ، اس لائن کو اجاگر کرنے کے لئے جا رہا ہے. ہم دیکھ سکتے ہیں کہ ہماری نمبر 11 درست طریقے سے ہے ہمارے مقامی متغیر میں نمائندگی. اب ہم، اس سے زیادہ کر سکتے ہیں نکلنے ہماری قیمت میں کیا ہوتا ہے دیکھتے ہیں ہم لوپ کے لئے اس کے اندر آگے بڑھنے کے طور پر. یہ ہر وقت ہم incremented کیا جاتا ہے لوپ کے لئے اس کے اوپر تک پہنچنے کے. چیزوں میں سے ایک اب ہو سکتا ہے عملدرآمد کے دوران ایسا کرنے کے لئے مفید ہو اس پروگرام کا اصل میں میرے لئے ہے کو دیکھنے کے لئے متغیر مجھدار تبدیل میرے پروگرام میں ہوتا ہے. اس صورت میں، میں نے اصل میں کر سکتے ہیں ڈبل قیمت کلک. یہ ایک متن والے فیلڈ ہو جاتا ہے کہ نوٹس. اب میں مختلف درج کر سکتے ہیں مکمل طور پر کی قدر میرا پروگرام کس طرح برتاؤ کرتی دیکھنے کے لئے مجھے لگتا ہے کہ متغیر تبدیل کر دیا ہے جب. اب اس صورت میں، متغیر اب میں قیمت 10 پر مشتمل ہے. لیکن پروگرام اب بھی ہے پر عملدرآمد میں روک دیا گیا. میں نے قدم جب، میں اس کو دیکھنے کے میں 10 کے طور پر میں داخل ہوئے جس قدر میں،، ، NUM کی قیمت سے زیادہ نہیں ہے جو فوری طور پر لوپ کے لئے کا سبب بنتا ہے عمل کو روکنے کے لئے. اب جب کہ نہ صرف ہے وجہ کیا تم کروگی جگہ میں متغیر میں ترمیم کرنا چاہتے ہیں. تم واقعی چاہتے ہو سکتا ہے یہ اتنا پر نظر ثانی کرنے کی کوشش کریں آپ جاری رکھ سکتے ہیں ایک لوپ کے پھانسی یا تاکہ آپ پر نظر ثانی کر سکتے ہیں اس سے پہلے کچھ قدر ریاضی کے کچھ مخصوص سیٹ تک پہنچ جاتا ہے آپ کو انجام دینے کے بارے میں ہیں کہ. تو اب ہم اصل تبدیل پروگرام کے طور پر میں کی قدر، عمل تھا یہ لوپ کے لئے چھوڑنے کے لئے کی وجہ سے وقت سے پہلے ہی میں، اچانک، کیونکہ قیمت سے زیادہ ہونا ہوا NUM کے، لوپ کے لئے کہ اس کے معنی اب کوئی پھانسی دے دی جائے کرنے کی ضرورت ہے. مزید، یہ ہوا ہم میں کی قدر تبدیل کر دیا گیا اس صورت لائن 17 پر روشنی ڈالی گیا تھا جب، وقت میں نقطہ تھا جس اس لوپ عملدرآمد کے لئے اصل میں اندازہ کیا جا رہا تھا. میں قدر کی تبدیل کر دیا تھا تو میں نے ایک مختلف لائن پر،، 19 کا کہنا ہے کہ ہم مختلف دیکھا ہوتا رویے 19 لائن کریں گے کیونکہ لوپ سے پہلے پھانسی دے دی ہے حالت تشخیص نو کی گئی تھی. اب اس نقطہ پر، ہوں، ایک بار پھر، اس پروگرام کے اختتام پر. اور میں نے اس کے لئے آگے بڑھنے کے لئے اجازت دے کر سکتے ہیں میرا پروگرام قدرتی چھوڑنے کے لئے کی اجازت دیتے ہیں. لیکن چیزوں کے ایک جوڑے کی ہے لے جانے کے لئے اہم ہیں کہ یہ خاص طور پر بحث سے. آپ کا اندازہ کرنے کی ضرورت ہے آپ کے اپنے مفروضات کس طرح کے بارے کوڈ برتاؤ کیا جانا چاہئے. کسی بھی وقت آپ سے کچھ ٹکڑے لگتا ہے کہ آپ کو پتہ کوڈ کام کرنے کے لئے کیا ہوتا ہے کے، کہ جانے کے لئے ایک سرخ پرچم ہو سکتا ہے واپس اور اندازہ ہے، اور اس بات کا یقین آپ کے مفروضہ ہے کہ کس طرح ہے کہ کوڈ کام کر رہا ہے یہ ہے کس طرح اصل میں سچ ہے آپ کے منبع کوڈ میں ظاہر. لیکن بات اس سے بھی زیادہ تھا، ہم ٹھیک کرنے والا کھولتا استعمال کر رہے ہیں جب، تم پر breakpoints کے ڈال کر سکتے ہیں کوڈ کے مختلف لائنوں، کرنے کے لئے سبب بن جائے گا ٹھیک کرنے والا کھولتا جس ان لائنوں میں سے ہر ایک پر عملدرآمد روک تو آپ اندازہ کر سکتے ہیں میموری یا اس سے بھی اس جگہ میں تبدیل. اور پھر، آپ کر سکتے ہیں یاد رکھیں کہ ایک سے زیادہ breakpoints کے تشکیل دے تاکہ تم یہ بھی پھانسی دوبارہ شروع کر سکتے، جائیں کوڈ کے بڑے حصے کے دوران، اور یہ خود بخود توقف کریں گے اگلے وقفے نقطہ پر. اصل میں زیادہ اعلی درجے کی نہیں ہے ٹھیک کرنے والا کھولتا کی خصوصیات، کے ساتھ ساتھ. لیکن ہم آپ سے رجوع کرنا پڑے گا کچھ بعد ویڈیوز واقعی کس طرح کے علاوہ چڑھاو کرنے کے لئے ان مخصوص افعال کو استعمال کرنے. اب کے لئے، آپ کا شکریہ دیکھ کے لئے بہت بہت شکریہ. اور اچھی قسمت ٹھیک.