1 00:00:00,000 --> 00:00:05,640 2 00:00:05,640 --> 00:00:06,830 >> ڈوگ لایڈ: ٹھیک GDB. 3 00:00:06,830 --> 00:00:08,480 یہ بالکل کیا ہے؟ 4 00:00:08,480 --> 00:00:11,310 کھڑا ہے جس تو GDB، GNU ٹھیک کرنے والا کھولتا کے لئے، 5 00:00:11,310 --> 00:00:15,040 واقعی ایک خوفناک آلے ہے کہ ہم کر سکتے ہیں ہے ہمارے پروگرام ڈیبگ ہماری مدد کرنے کے لئے استعمال، 6 00:00:15,040 --> 00:00:18,210 یا چیزوں کو کہاں ہیں باہر تلاش ہمارے پروگراموں میں غلط ہو رہا. 7 00:00:18,210 --> 00:00:22,590 GDB، حیرت انگیز طاقتور ہے لیکن اس کے ساتھ پیداوار اور بات چیت 8 00:00:22,590 --> 00:00:23,830 تھوڑا سا خفیہ ہو سکتا ہے. 9 00:00:23,830 --> 00:00:28,210 یہ عام طور پر ایک کمانڈ لائن کے آلے کے ہے، اور یہ تم پر پیغامات کی ایک بہت پھینک کر سکتے ہیں. 10 00:00:28,210 --> 00:00:31,144 اور اس قسم کے سخت کر سکتے ہیں چل رہا ہے بالکل وہی جو کا تجزیہ. 11 00:00:31,144 --> 00:00:33,560 خوش قسمتی سے، ہم لے لیا ہے اقدامات آپ کے لئے اس مسئلہ کو حل کرنے 12 00:00:33,560 --> 00:00:36,281 آپ CS50 کے ذریعے کام کے طور پر. 13 00:00:36,281 --> 00:00:39,030 آپ گرافیکل استعمال نہیں کر رہے ٹھیک کرنے والا کھولتا، جو اپنے ساتھی ڈین 14 00:00:39,030 --> 00:00:41,570 Armandarse بہت بات کی ہے ایک ویڈیو میں تھوڑا سا اس 15 00:00:41,570 --> 00:00:44,740 یہاں ہونا چاہئے اب، آپ کو ضرورت ہو سکتی ہے 16 00:00:44,740 --> 00:00:48,270 ان کمانڈ لائن استعمال کرنے کے لئے اوزار GDB کے ساتھ کام کرنے کے لئے. 17 00:00:48,270 --> 00:00:51,250 آپ CS50 میں کام کر رہے ہیں IDE، آپ کو ایسا کرنے کی ضرورت نہیں ہے. 18 00:00:51,250 --> 00:00:53,550 لیکن تم نہیں ہو تو CS50 IDE میں کام کرنے والے، 19 00:00:53,550 --> 00:00:55,750 شاید ایک ورژن استعمال کر رہے ہیں CS50 آلات کی، 20 00:00:55,750 --> 00:00:58,860 یا کسی اور لینکس آپریٹنگ GDB کے ساتھ نظام، اس پر نصب 21 00:00:58,860 --> 00:01:00,980 آپ کو استعمال کرنے کی ضرورت ہو سکتی ان کمانڈ لائن ٹولز. 22 00:01:00,980 --> 00:01:02,860 >> اور اس کے بعد آپ کو ہو سکتا ہے یہ ہے، کہ کیا کرنا ہے 23 00:01:02,860 --> 00:01:06,280 صرف کس طرح سمجھنے کے لئے مفید GDB کمانڈ لائن سے کام کرتا ہے. 24 00:01:06,280 --> 00:01:09,650 لیکن ایک بار پھر، آپ ہیں تو CS50 IDE کا استعمال کرتے ہوئے، آپ 25 00:01:09,650 --> 00:01:15,400 گرافیکل ٹھیک کرنے والا کھولتا استعمال کر سکتے ہیں کہ IDE میں بنایا گیا ہے. 26 00:01:15,400 --> 00:01:18,750 تو چیزوں کے ساتھ جا رہا حاصل کرنے کے لئے GDB، کرنا شروع کرنا 27 00:01:18,750 --> 00:01:21,220 کسی خاص کے عمل پروگرام، تمام تمہیں کیا ضرورت ہے 28 00:01:21,220 --> 00:01:23,810 GDB کے بعد کی قسم ہے پروگرام کے نام سے. 29 00:01:23,810 --> 00:01:28,620 لہذا مثال کے طور، آپ کے پروگرام ہے تو ہیلو، آپ GDB ہیلو ٹائپ کریں گے. 30 00:01:28,620 --> 00:01:31,210 >> اگر آپ ایسا کرتے ہیں، آپ جا رہے ہیں GDB ماحول ھیںچو. 31 00:01:31,210 --> 00:01:33,800 آپ فوری طور پر تبدیل کریں گے، اور بجائے عام طور پر کیا یہ 32 00:01:33,800 --> 00:01:35,841 آپ چیزوں کو ٹائپ جب کمانڈ line-- LS میں، 33 00:01:35,841 --> 00:01:38,115 اپنے مخصوص کے تمام cd-- لینکس، آپ فوری طور پر حکم 34 00:01:38,115 --> 00:01:42,200 ، شاید، کچھ بدل جائے گی قوسین کی طرح GDB قوسین. 35 00:01:42,200 --> 00:01:46,630 کیونکہ، اپنے نئے GDB فوری ہے آپ GDB ماحول کے اندر ہو. 36 00:01:46,630 --> 00:01:49,830 ایک بار جب کہ ماحول کے اندر، دو اہم حکم ہے 37 00:01:49,830 --> 00:01:52,290 آپ کو شاید استعمال کریں گے کہ مندرجہ ذیل ترتیب میں. 38 00:01:52,290 --> 00:01:55,200 >> پہلا B، ہے جو وقفے کے لئے مختصر ہے. 39 00:01:55,200 --> 00:01:58,690 اور آپ ب، آپ عام طور پر ٹائپ کے بعد ایک تقریب کا نام ٹائپ کریں، 40 00:01:58,690 --> 00:02:01,040 یا آپ کو معلوم ہو تو کیا لائن تعداد کے ارد گرد 41 00:02:01,040 --> 00:02:04,100 آپ کے پروگرام شروع کر رہا ہے ایک چھوٹا سا عجیب برتاؤ کرنا، 42 00:02:04,100 --> 00:02:06,370 آپ کو ایک لائن ٹائپ کر سکتے ہیں تعداد کے ساتھ ساتھ وہاں. 43 00:02:06,370 --> 00:02:09,660 کیا B، یا وقفے، کرتا ہے یہ آپ کے پروگرام کی اجازت دیتا ہے 44 00:02:09,660 --> 00:02:13,270 ایک خاص نقطہ تک چلانے کے لئے، تقریب کی یعنی، نام 45 00:02:13,270 --> 00:02:15,880 آپ کی وضاحت یا لائن ہے آپ کی وضاحت اس نمبر. 46 00:02:15,880 --> 00:02:18,590 >> اور اس نقطہ پر، یہ پھانسی منجمد گا. 47 00:02:18,590 --> 00:02:21,670 اس کی وجہ سے، ایک بہت اچھی بات ہے پھانسی منجمد کر دیا گیا ہے ایک بار، 48 00:02:21,670 --> 00:02:25,214 آپ کو بہت آہستہ آہستہ شروع کر سکتے ہیں آپ کے پروگرام کے ذریعے قدم. 49 00:02:25,214 --> 00:02:28,130 آپ کیا گیا ہے تو عام طور پر، چلانے آپ کے پروگراموں، وہ بہت مختصر ہیں. 50 00:02:28,130 --> 00:02:31,250 عام طور پر، آپ ڈاٹ سلیش ٹائپ جو کچھ بھی آپ کے پروگرام کا نام،، درج کریں مارا ہے 51 00:02:31,250 --> 00:02:33,470 اور آپ کو پلکیں جھپکاتی پہلے، آپ پروگرام پہلے ہی ختم ہو گیا ہے. 52 00:02:33,470 --> 00:02:36,620 یہ واقعی میں کوشش کرنے کے لئے وقت کی ایک بہت نہیں ہے اور غلط ہو رہا ہے کیا پتہ. 53 00:02:36,620 --> 00:02:40,920 یہ واقعی چیزوں کو سست کرنے کے قابل ہو جائے کرنے کے لئے تو نیچے بی کے ساتھ ایک بریک پوائنٹ قائم کرنے کی طرف، 54 00:02:40,920 --> 00:02:43,040 اور پھر میں نکلنے. 55 00:02:43,040 --> 00:02:46,169 >> آپ کو آپ کے وقفے قائم ہے ایک بار پھر نقطہ، آپ اس پروگرام کو چلا سکتے ہیں. 56 00:02:46,169 --> 00:02:47,960 اور آپ کو کوئی چیز ہے تو کمانڈ لائن کے دلائل، 57 00:02:47,960 --> 00:02:51,610 آپ، یہاں ان کی وضاحت نہیں ہے جب آپ کو آپ کے پروگرام کا نام GDB ٹائپ. 58 00:02:51,610 --> 00:02:55,980 تم سب کو کمانڈ لائن کی وضاحت R، یا رن لینے کی طرف سے دلائل، 59 00:02:55,980 --> 00:03:00,270 اور اس کے بعد جو کچھ بھی کمانڈ لائن کے دلائل آپ کو آپ کے پروگرام کے اندر کی ضرورت ہے. 60 00:03:00,270 --> 00:03:03,510 دیگر کی ایک بڑی تعداد واقعی ہیں اہم اور مفید حکم دیتا ہے 61 00:03:03,510 --> 00:03:04,970 جی ڈی پی کے ماحول کے اندر. 62 00:03:04,970 --> 00:03:07,540 تو فوری طور پر مجھے دو ان میں سے کچھ سے زیادہ جانا. 63 00:03:07,540 --> 00:03:11,320 >> سب سے پہلے، اگلے کے لئے مختصر ہے جو ن ہے، اور آپ کو اگلے کی بجائے (ن) کے ٹائپ کر سکتے ہیں 64 00:03:11,320 --> 00:03:12,304 دونوں کام کریں گے. 65 00:03:12,304 --> 00:03:13,470 اور یہ صرف آشلپی ہے. 66 00:03:13,470 --> 00:03:17,540 اور آپ کو شاید پہلے سے ہی ہو گیا ہے کے طور پر چیزیں ٹائپ کرنے کے قابل ہونے کی وجہ سے، کے لئے استعمال کیا 67 00:03:17,540 --> 00:03:20,520 چھوٹا عام طور پر بہتر ہے. 68 00:03:20,520 --> 00:03:24,100 اور کیا یہ کروں گا یہ کروں گا ہے کوڈ کے مستقبل کے حوالے سے ایک بلاک قدم. 69 00:03:24,100 --> 00:03:26,170 تو یہ آگے بڑھنے گے ایک تقریب کو فون تک. 70 00:03:26,170 --> 00:03:28,350 اور پھر بجائے اس تقریب میں ڈائیونگ 71 00:03:28,350 --> 00:03:33,130 اور اس کے افعال میں سے سب کے ذریعے جا رہا کوڈ، یہ صرف تقریب پڑے گا. 72 00:03:33,130 --> 00:03:34,400 >> تقریب میں بلایا جائے گا. 73 00:03:34,400 --> 00:03:35,733 یہ اس کا کام ہے جو کروں گا. 74 00:03:35,733 --> 00:03:38,870 یہ ایک قیمت پر واپس آ جائیں گے یہ کہا جاتا ہے کہ تقریب. 75 00:03:38,870 --> 00:03:42,490 اور پھر آپ پر منتقل کریں گے بلا کہ تقریب کی اگلی لائن. 76 00:03:42,490 --> 00:03:44,555 آپ کو قدم کے لئے چاہتے ہیں تقریب کے اندر، 77 00:03:44,555 --> 00:03:46,430 کی بجائے صرف ہونے کے یہ خاص طور پر، پھانسی 78 00:03:46,430 --> 00:03:50,004 آپ کا مسئلہ لگتا ہے کہ اس تقریب کے اندر جھوٹ سکتا ہے، 79 00:03:50,004 --> 00:03:52,670 آپ، کورس کے، ایک وقفے قائم کر سکتے ہیں اندر اس تقریب کی طرف اشارہ. 80 00:03:52,670 --> 00:03:57,820 آپ نے پہلے ہی چلا رہے ہیں یا، آپ کر سکتے ہیں کوڈ کے مستقبل کے حوالے سے ایک لائن کے قدم کے لئے ایس کا استعمال کریں. 81 00:03:57,820 --> 00:04:01,170 >> تو اس میں قدم اور افعال میں کودو، 82 00:04:01,170 --> 00:04:04,750 کی بجائے صرف پھانسی ہے اور تقریب میں جاری 83 00:04:04,750 --> 00:04:07,380 آپ ٹھیک کرنا کے لئے میں ہیں. 84 00:04:07,380 --> 00:04:09,870 کیا تم نے کبھی جاننا چاہتے ہیں تو ایک متغیر کی قدر، 85 00:04:09,870 --> 00:04:12,507 آپ P، یا پرنٹ ٹائپ کر سکتے ہیں، اور پھر متغیر کے نام. 86 00:04:12,507 --> 00:04:15,090 اور یہ کہ، آپ کو باہر پرنٹ گا GDB ماحول کے اندر، 87 00:04:15,090 --> 00:04:19,110 متغیر کے نام، کہ you-- me-- متغیر کی قدر معاف 88 00:04:19,110 --> 00:04:20,064 آپ کا نام کیا ہے کہ. 89 00:04:20,064 --> 00:04:23,230 آپ کو ہر کی اقدار جاننا چاہتے ہیں تو جہاں سے مقامی متغیر رسائی 90 00:04:23,230 --> 00:04:25,970 آپ فی الحال میں ہیں آپ پروگرام آپ کو معلومات مقامی لوگوں کے ٹائپ کر سکتے ہیں. 91 00:04:25,970 --> 00:04:28,332 اس سے ایک بہت تیز ہے پھر P ٹائپ اور جو، 92 00:04:28,332 --> 00:04:30,540 کے تمام باہر کی لسٹنگ آپ موجود جانتے ہیں کہ متغیر. 93 00:04:30,540 --> 00:04:34,370 آپ کی معلومات مقامی لوگوں ٹائپ کریں، اور یہ کر سکتے ہیں آپ کے لئے سب کچھ باہر پرنٹ گا. 94 00:04:34,370 --> 00:04:37,770 اگلا، دوسرا اپ ہے جس میں، BT ہے واپس ٹریس کے لئے مختصر. 95 00:04:37,770 --> 00:04:41,680 اب، عام طور پر، خاص طور پر ابتدائی CS50 میں، 96 00:04:41,680 --> 00:04:44,450 تم واقعی میں اس موقع نہیں پڑے گا BT، یا واپس ٹریس استعمال کرنے کے لئے، 97 00:04:44,450 --> 00:04:47,860 آپ کے افعال ہونے نہیں کر رہے ہیں کیونکہ دیگر افعال ہے کہ کہتے ہیں. 98 00:04:47,860 --> 00:04:50,450 >> آپ اہم کال ایک ہو سکتا ہے تقریب، لیکن جو شاید یہ ہے. 99 00:04:50,450 --> 00:04:53,199 آپ کو اس دوسری تقریب نہیں ہے ایک اور تقریب، بلا جس 100 00:04:53,199 --> 00:04:54,880 ایک اور تقریب بلاتا ہے، اور اسی طرح کی. 101 00:04:54,880 --> 00:04:57,550 لیکن اپنے پروگراموں زیادہ ملے پیچیدہ، اور خاص طور پر 102 00:04:57,550 --> 00:05:00,290 آپ کام شروع تکرار کے ساتھ، واپس ٹریس 103 00:05:00,290 --> 00:05:05,150 آپ کو مطلع کرنے کے لئے ایک بہت مفید طریقہ ہو سکتا ہے قسم کی جہاں کے لئے کچھ سیاق و سباق حاصل 104 00:05:05,150 --> 00:05:06,460 میں نے اپنے پروگرام میں ہوں. 105 00:05:06,460 --> 00:05:10,590 تو آپ اپنے کوڈ لکھا ہے کہتے ہیں، اور آپ اہم مطالبہ ایک تقریب جانتے ہیں کہ 106 00:05:10,590 --> 00:05:14,720 ایک تقریب بلاتا ہے جس میں F، ایک تقریب H بلاتا ہے جس میں جی،. 107 00:05:14,720 --> 00:05:17,650 تو ہم نے کئی تہوں nesting کے یہاں کیا ہو رہا. 108 00:05:17,650 --> 00:05:19,440 >> آپ کے اندر ہیں تو آپ GDB ماحول، 109 00:05:19,440 --> 00:05:21,640 اور آپ کو آپ کے اندر جانتے ہیں H کی، لیکن آپ کو بھول جاتے 110 00:05:21,640 --> 00:05:27,210 آپ جہاں آپ کو مل گیا ہے کے بارے میں آپ BT، یا واپس ٹریس ٹائپ کر سکتے ہیں are--، 111 00:05:27,210 --> 00:05:32,370 اور یہ،، H، G باہر اہم F پرنٹ گا کچھ دوسری معلومات، کے ساتھ جو 112 00:05:32,370 --> 00:05:35,984 آپ کو ایک اشارہ دیتا ہے، ٹھیک ہے اہم کہا جاتا F، بلایا G F، G، H بلایا 113 00:05:35,984 --> 00:05:37,900 اور وہ کہاں ہے میں فی الحال اپنے پروگرام میں ہوں. 114 00:05:37,900 --> 00:05:41,380 تو یہ واقعی مفید ہو سکتا ہے خاص طور پر GDB کے خفیہ پن کے طور پر 115 00:05:41,380 --> 00:05:45,667 کرنے کے لئے، ایک چھوٹا سا زبردست بن چیزیں ہیں کہاں باہر تلاش. 116 00:05:45,667 --> 00:05:48,500 آخر میں، آپ کے پروگرام کیا جاتا ہے جب، تم نے کیا کر رہے ہیں جب یا یہ ٹھیک 117 00:05:48,500 --> 00:05:50,125 اور آپ کو قدم کرنا چاہتے ہیں GDB ماحول سے، 118 00:05:50,125 --> 00:05:51,940 یہ اس سے باہر حاصل کرنے کے لئے کس طرح پتہ کرنے میں مدد ملتی ہے. 119 00:05:51,940 --> 00:05:55,500 آپ Q ٹائپ، یا باہر حاصل کرنے کے لئے، چھوڑ کر سکتے ہیں. 120 00:05:55,500 --> 00:05:59,220 اب، آج کی ویڈیو سے پہلے میں ایک چھوٹی گاڑی پروگرام تیار 121 00:05:59,220 --> 00:06:03,900 میں مرتب جس بلایا چلانے buggy1، buggy1.c کے طور پر جانا جاتا ہے ایک فائل سے. 122 00:06:03,900 --> 00:06:06,500 آپ کو اس توقع کر سکتے ہیں پروگرام اصل چھوٹی گاڑی میں ہے. 123 00:06:06,500 --> 00:06:08,990 کچھ غلط ہو جاتا جب میں کوشش کرتے ہیں اور اسے چلاتے ہیں. 124 00:06:08,990 --> 00:06:13,014 اب بدقسمتی سے، میں نے نادانستہ طور ، میرے buggy1.c کے فائل کو خارج کر 125 00:06:13,014 --> 00:06:15,930 تاکہ حکم میں مجھے پتہ کرنے کے لئے کیا، اس پروگرام کے ساتھ غلط ہو رہا ہے 126 00:06:15,930 --> 00:06:18,770 میں استعمال کرنے کے لئے جا رہا ہوں GDB قسم کی آنکھ بند کر کے، کی کوشش کر رہے 127 00:06:18,770 --> 00:06:22,372 اس پروگرام کے ذریعے تشریف لے کرنے کے لئے غلط ہو رہا ہے بالکل وہی جو پتہ. 128 00:06:22,372 --> 00:06:24,580 لیکن صرف ٹولز کا استعمال کرتے ہم نے پہلے ہی کے بارے میں سیکھا ہے 129 00:06:24,580 --> 00:06:27,700 ہم نے بہت اعداد و شمار کر سکتے ہیں یہ بالکل وہی جو باہر. 130 00:06:27,700 --> 00:06:30,740 تو کرنے کے لئے اوپر سے سر دو CS50 IDE، اور ایک نظر ہے. 131 00:06:30,740 --> 00:06:33,155 ٹھیک ہے، تو ہم یہاں ہیں میرے CS50 IDE ماحول، 132 00:06:33,155 --> 00:06:35,697 اور میں نے تھوڑا سا میں زوم کریں گے لہذا آپ کو ایک چھوٹا سا زیادہ دیکھ سکتے ہیں. 133 00:06:35,697 --> 00:06:38,530 میرے ٹرمنل ونڈو میں، میں نے فہرست تو اپنے موجودہ ڈائریکٹر کے مندرجات 134 00:06:38,530 --> 00:06:41,250 LS کے ساتھ، ہم اس میں دیکھتا ہوں منبع فائلوں کے ایک جوڑے کی ہے 135 00:06:41,250 --> 00:06:44,982 یہاں، سمیت پہلے چلانے buggy1 پر تبادلہ خیال کیا. 136 00:06:44,982 --> 00:06:46,940 کیا بالکل جب پر جاتا ہے میں کوشش کریں اور چلانے buggy1 چلانے. 137 00:06:46,940 --> 00:06:47,773 ویسے چلو باہر تلاش. 138 00:06:47,773 --> 00:06:52,510 میں، ڈاٹ سلیش ٹائپ چھوٹی گاڑی، اور میں درج کریں مارا. 139 00:06:52,510 --> 00:06:53,670 >> انقطاع گناہ. 140 00:06:53,670 --> 00:06:55,000 یہ اچھا نہیں ہے. 141 00:06:55,000 --> 00:06:57,180 آپ کو یاد ہے تو، ایک انقطاع غلطی عام طور پر 142 00:06:57,180 --> 00:07:01,540 ہم میموری رسائی وقت ہوتی ہے جب ہم چھو کرنے کی اجازت نہیں کر رہے ہیں. 143 00:07:01,540 --> 00:07:03,820 ہم کسی نہ کسی طرح پہنچ گئے حد سے باہر 144 00:07:03,820 --> 00:07:05,995 کس پروگرام، سنکلک، ہمیں دیا ہے. 145 00:07:05,995 --> 00:07:08,310 اور اس طرح پہلے سے ہی اس ایک اشارہ آلات میں رکھنے کے لئے 146 00:07:08,310 --> 00:07:10,660 ہم ٹھیک عمل شروع کے طور پر. 147 00:07:10,660 --> 00:07:13,620 کچھ یہاں ایک چھوٹا سا غلط چلا گیا ہے. 148 00:07:13,620 --> 00:07:15,935 >> ٹھیک ہے، تو چلو شروع GDB ماحول 149 00:07:15,935 --> 00:07:19,030 ہم پتہ کر سکتے ہیں اور دیکھو بالکل وہی مسئلہ ہے. 150 00:07:19,030 --> 00:07:21,674 میرے سکرین صاف کرنے کے لئے جا رہا ہوں اور میں GDB ٹائپ کرنے جا رہا ہوں 151 00:07:21,674 --> 00:07:24,340 ایک بار پھر، GDB ماحول میں داخل ہونے، اور پروگرام کے نام 152 00:07:24,340 --> 00:07:27,450 میں، چلانے buggy1 ڈیبگ کرنا چاہتے ہیں. 153 00:07:27,450 --> 00:07:30,182 ہم پڑھ، ایک چھوٹا سا پیغام ملتا ہے چلانے buggy1 کی علامات، کیا. 154 00:07:30,182 --> 00:07:32,390 مطلب یہ ہے کہ یہ سب نکالا جاتا ہے ایک ساتھ مل کر تمام کوڈ، 155 00:07:32,390 --> 00:07:35,570 اور اب اس میں بھری ہوئی کیا گیا ہے GDB، اور اسے جانے کے لئے تیار ہے. 156 00:07:35,570 --> 00:07:37,140 >> اب، مجھے کیا کرنا چاہتے ہیں؟ 157 00:07:37,140 --> 00:07:39,130 آپ کو کیا یاد کریں پہلا قدم عام طور پر ہے 158 00:07:39,130 --> 00:07:42,540 میں اس ماحول کے اندر ہوں کے بعد؟ 159 00:07:42,540 --> 00:07:44,540 امید ہے، آپ کو مقرر کیا ایک وقفے کے نقطہ، کیونکہ 160 00:07:44,540 --> 00:07:46,240 حقیقت میں ہے کہ میں کیا کرنا چاہتے ہے. 161 00:07:46,240 --> 00:07:47,990 اب، میں نہیں ہے اس کے لئے ماخذ کوڈ 162 00:07:47,990 --> 00:07:50,948 میرے سامنے، جو شاید ہے نہیں عام استعمال کے کیس، راہ کی طرف سے. 163 00:07:50,948 --> 00:07:52,055 تم شاید. 164 00:07:52,055 --> 00:07:52,680 تو یہ اچھی بات ہے. 165 00:07:52,680 --> 00:07:55,790 لیکن سنبھالنے تم نہیں، کیا کرتے آپ جانتے ہیں کہ ایک تقریب 166 00:07:55,790 --> 00:07:58,880 ہر C پروگرام میں موجود ہے؟ 167 00:07:58,880 --> 00:08:04,420 کوئی بات نہیں کتنا بڑا یا پیچیدہ یہ ہے، اس تقریب کو یقینی طور پر موجود ہے. 168 00:08:04,420 --> 00:08:05,440 اہم، ٹھیک ہے؟ 169 00:08:05,440 --> 00:08:08,870 >> چنانچہ اس کے علاوہ، ہم کر سکتے ہیں میں ناکامی اہم میں ایک بریک پوائنٹ قائم. 170 00:08:08,870 --> 00:08:12,200 اور پھر، میں صرف ٹائپ کر سکتے ہیں بجائے بی کے، اہم توڑنے. 171 00:08:12,200 --> 00:08:14,650 اور تم جاننا چاہتے ہیں تو اگر کبھی ایک طویل کمانڈ ٹائپ 172 00:08:14,650 --> 00:08:16,800 اور پھر آپ کو احساس ہوتا ہے کہ غلط چیز ٹائپ، 173 00:08:16,800 --> 00:08:18,770 اور آپ سے چھٹکارا حاصل کرنا چاہتے ہیں کے تمام میں صرف کے طور پر کیا، 174 00:08:18,770 --> 00:08:22,029 آپ جس میں، کنٹرول یو لے سکتے ہیں سب کچھ کو خارج اور آپ کو واپس لانے کے 175 00:08:22,029 --> 00:08:23,570 کرسر لائنوں کے شروع کرنے کے لئے. 176 00:08:23,570 --> 00:08:26,569 صرف نیچے کی پکڑ سے تیزی سے ایک بہت حذف، یا یہ ایک گروپ بار مارنے 177 00:08:26,569 --> 00:08:27,080 زیادہ. 178 00:08:27,080 --> 00:08:28,740 >> تو ہم اہم میں ایک بریک پوائنٹ قائم کریں گے. 179 00:08:28,740 --> 00:08:32,970 اور آپ دیکھ سکتے ہیں، یہ ہم نے کا کہنا ہے کہ فائل buggy1.c کے میں ایک بریک پوائنٹ قائم، 180 00:08:32,970 --> 00:08:36,330 اور بظاہر پہلی لائن اہم کوڈ کے مطابق سات ہے. 181 00:08:36,330 --> 00:08:38,080 ایک بار پھر، ہمارے پاس نہیں ہے یہاں ذریعہ فائل، 182 00:08:38,080 --> 00:08:40,429 لیکن میں یہ ہے کہ فرض کریں گے مجھے سچ کہہ رہا. 183 00:08:40,429 --> 00:08:44,510 اور پھر، میں صرف کوشش کر رہا ہوں اور R، پروگرام کو چلانے کے. 184 00:08:44,510 --> 00:08:45,360 پروگرام شروع. 185 00:08:45,360 --> 00:08:48,160 ٹھیک ہے، تو یہ پیغام ایک چھوٹا سا خفیہ ہے. 186 00:08:48,160 --> 00:08:50,160 لیکن بنیادی طور پر کیا ہے یہاں کیا ہو رہا ہے یہ صرف ہے 187 00:08:50,160 --> 00:08:53,350 میں اپنے وقفے مارا ہے مجھ سے کہہ رہی نقطہ، بریک پوائنٹ نمبر 1. 188 00:08:53,350 --> 00:08:55,877 >> اور پھر، کوڈ کے اس لائن، ایسی کوئی فائل یا ڈائریکٹری. 189 00:08:55,877 --> 00:08:57,710 صرف وجہ یہ ہے کہ میں اس پیغام دیکھ رہا ہوں 190 00:08:57,710 --> 00:09:00,800 میں نے نادانستہ طور پر کی وجہ سے میرے buggy.c فائل کو خارج کر. 191 00:09:00,800 --> 00:09:04,050 میرے buggy1.c کے فائل موجود موجودہ ڈائریکٹری میں، 192 00:09:04,050 --> 00:09:06,920 وہاں اصل میں کریں گے کہ لائن حق مجھے بتاو کیا کوڈ کی لائن 193 00:09:06,920 --> 00:09:08,214 لفظی پڑھتا. 194 00:09:08,214 --> 00:09:09,380 بدقسمتی سے، میں اسے حذف. 195 00:09:09,380 --> 00:09:14,790 ہم اس قسم کی تشریف لے کرنے کے لئے جا رہے ہیں زیادہ آنکھ بند کر کے یہ تھوڑا ذریعے. 196 00:09:14,790 --> 00:09:17,330 >> ٹھیک ہے، تو چلو دیکھتے ہیں، کیا میں یہاں کیا کرنا چاہتے ہیں؟ 197 00:09:17,330 --> 00:09:21,770 ٹھیک ہے، میں مقامی کیا جاننا چاہتے ہیں متغیر ہو سکتا ہے مجھ سے دستیاب ہیں. 198 00:09:21,770 --> 00:09:23,570 میں نے اپنے پروگرام شروع کر دیا ہے. 199 00:09:23,570 --> 00:09:28,515 کی ہو سکتا ہے کیا دیکھتے ہیں پہلے سے ہی ہمارے لئے initialized ہے. 200 00:09:28,515 --> 00:09:31,430 میں معلومات مقامی لوگوں کے، کوئی مقامی ٹائپ. 201 00:09:31,430 --> 00:09:33,960 ٹھیک ہے، نہیں ہے تو مجھے معلومات کے ایک ٹن دے. 202 00:09:33,960 --> 00:09:37,600 میں کوشش کریں اور ایک متغیر باہر پرنٹ کر سکتے ہیں، لیکن میں کسی بھی متغیر کے نام نہیں جانتے. 203 00:09:37,600 --> 00:09:39,930 میں واپس ٹریس کوشش کر سکتے ہیں، لیکن میں اہم کے اندر ہوں، 204 00:09:39,930 --> 00:09:43,710 تو میں نے نہیں بنایا ہے جانتے ہیں اب ایک اور تقریب کال. 205 00:09:43,710 --> 00:09:47,710 >> میری صرف اختیارات ہیں کی طرح لگ رہا ہے تو ن یا تو استعمال کرتے ہیں اور میں گوتا لگا کرنے کے لئے شروع کرنے کے لئے. 206 00:09:47,710 --> 00:09:49,630 میں (ن) استعمال کرنے کے لئے جا رہا ہوں. 207 00:09:49,630 --> 00:09:51,180 تو میں (ن) ٹائپ کریں. 208 00:09:51,180 --> 00:09:53,060 گوش اوہ میرے، یہاں کیا چل رہا ہے. 209 00:09:53,060 --> 00:09:56,260 پروگرام سگنل موصول، SIGSEGV انقطاع غلطی، 210 00:09:56,260 --> 00:09:57,880 اور پھر چیزیں کی ایک پوری چڑھانے. 211 00:09:57,880 --> 00:09:58,880 میں نے پہلے ہی ابیبھوت ہوں. 212 00:09:58,880 --> 00:10:00,980 ویسے، اصل میں وہاں ایک بہت کچھ یہاں سیکھا جائے. 213 00:10:00,980 --> 00:10:02,520 تو کیا یہ ہمارے بتاتا ہے؟ 214 00:10:02,520 --> 00:10:09,180 کیا یہ ہمیں بتاتا ہے اس پروگرام ہے، ہے کے بارے میں ہے، لیکن ابھی تک نہیں، SEG غلطی. 215 00:10:09,180 --> 00:10:12,550 اور خاص طور پر، میں جا رہا ہوں مزید بھی یہاں میں زوم کرنے کے، 216 00:10:12,550 --> 00:10:18,980 اس کے بارے میں seg غلطی کرنے کے بارے میں ہے کچھ strcmp بلایا. 217 00:10:18,980 --> 00:10:22,705 >> اب، ہم نے بات چیت نہیں کر سکتے ہیں بڑے پیمانے پر اس تقریب. 218 00:10:22,705 --> 00:10:25,580 ہم جا نہیں کر رہے ہیں کیونکہ یہ is-- ہر تقریب کے بارے میں بات کرنے کے لئے اس 219 00:10:25,580 --> 00:10:28,610 C معیاری میں موجود لائبریری لیکن وہ آپ کے لئے تمام دستیاب ہیں 220 00:10:28,610 --> 00:10:32,110 آپ کو ایک لے خاص طور پر اگر reference.cs50.net دیکھو. 221 00:10:32,110 --> 00:10:35,000 اور strcmp ایک بہت طاقتور ہے کے اندر موجود اس تقریب 222 00:10:35,000 --> 00:10:38,070 string.h کے ہیڈر کے ایک ہیڈر ہے جو فائل، 223 00:10:38,070 --> 00:10:41,970 افعال کے لئے وقف کیا جاتا ہے کہ فائل کے ساتھ کام اور ڈور جوڑتوڑ. 224 00:10:41,970 --> 00:10:49,830 >> اور خاص طور پر، کیا strcmp کرتا ہے یہ دو ڈور کی اقدار کا موازنہ. 225 00:10:49,830 --> 00:10:54,160 تو میں انقطاع غلطی کے بارے میں ہوں ایک کال پر ایسا لگتا ہے strcmp سے. 226 00:10:54,160 --> 00:10:58,530 ، میں (ن) کو نشانہ بنانے، اور میں حقیقت میں پیغام ملتا ہے پروگرام سگنل SIGSEGV ساتھ ختم 227 00:10:58,530 --> 00:11:01,370 انقطاع غلطی. تو اب میں واقعی میں مؤرد الزام ٹھہرایا SEG ہے، 228 00:11:01,370 --> 00:11:06,479 اور اپنے پروگرام خوبصورت ہے زیادہ مؤثر طریقے سے چھوڑ دیا. 229 00:11:06,479 --> 00:11:07,770 اس پروگرام کے اختتام ہے. 230 00:11:07,770 --> 00:11:10,370 یہ ٹوٹ گیا، اس اجلاس. 231 00:11:10,370 --> 00:11:14,740 تو ایک بہت کچھ نہیں تھا، لیکن میں اصل میں بہت تھوڑا سا سیکھا 232 00:11:14,740 --> 00:11:16,747 اس چھوٹے تجربے سے. 233 00:11:16,747 --> 00:11:17,580 میں کیا سیکھا ہے؟ 234 00:11:17,580 --> 00:11:22,020 ویسے، میرا پروگرام کریش فوری طور پر بہت زیادہ. 235 00:11:22,020 --> 00:11:26,300 میرا پروگرام پر کریش ایک strcmp کو پکارے، لیکن میں 236 00:11:26,300 --> 00:11:30,560 میں کسی بھی مقامی متغیر نہیں ہے میری یہ کریش اس وقت پروگرام. 237 00:11:30,560 --> 00:11:37,320 تو کیا سٹرنگ، یا ڈور، میں ممکنہ طور پر ہو سکتا ہے کا موازنہ. 238 00:11:37,320 --> 00:11:42,140 میں کسی بھی مقامی نہیں ہے تو متغیر پرممکن ہے کہ آپ 239 00:11:42,140 --> 00:11:45,520 شاید ایک ہے میں وہاں have-- کہ شبہ سچ ہو سکتا ہے جو عالمی متغیر،. 240 00:11:45,520 --> 00:11:47,670 >> لیکن عام طور پر، ایسا لگتا ہے جیسے میں موازنہ کر رہا ہوں 241 00:11:47,670 --> 00:11:52,070 موجود نہیں ہے کہ کچھ کے لئے. 242 00:11:52,070 --> 00:11:54,130 تو تحقیقات دو ایک چھوٹی سی نے مزید کہا کہ. 243 00:11:54,130 --> 00:11:55,120 تو میں نے اپنے سکرین صاف کرنے کے لئے جا رہا ہوں. 244 00:11:55,120 --> 00:11:57,536 میں باہر چھوڑ کر جا رہا ہوں ایک سیکنڈ کے لئے GDB ماحول. 245 00:11:57,536 --> 00:12:01,300 اور میں ٹھیک ہے، میں سوچ رہا ہوں، تو وہاں ہے اپنے پروگرام میں کوئی مقامی متغیر. 246 00:12:01,300 --> 00:12:06,444 میں منتقل کرنے کی توقع کر رہا ہوں ہو سکتا ہے تو مجھے حیرت ہے ایک کمانڈ لائن کی دلیل کے طور پر ایک تار میں. 247 00:12:06,444 --> 00:12:07,610 تو صرف اس سے باہر کی جانچ کرنے دیں. 248 00:12:07,610 --> 00:12:09,020 میں نے پہلے یہ نہیں کیا. 249 00:12:09,020 --> 00:12:14,244 >> میں اس پروگرام چلاتے شاید تو چلو دیکھتے ہیں اگر ایک کمانڈ لائن کی دلیل کے ساتھ یہ کام کرتا ہے. 250 00:12:14,244 --> 00:12:16,140 ہہ، وہاں کوئی انقطاع غلطی. 251 00:12:16,140 --> 00:12:17,870 یہ صرف میں نے اسے باہر سوچا کہ مجھ سے کہا. 252 00:12:17,870 --> 00:12:19,170 تو شاید اس کو ٹھیک یہاں ہے. 253 00:12:19,170 --> 00:12:27,560 میں واپس جانا اور اگر اور یقینا، دیکھو buggy1.c کے لئے اصل منبع کوڈ، 254 00:12:27,560 --> 00:12:31,180 میں کیا کر رہا ہوں ایسا لگتا ہے جیسے میں بغیر strcmp کو کال کر رہا ہوں 255 00:12:31,180 --> 00:12:34,010 حقیقت میں ہے argv [1] موجود ہے چاہے جانچ پڑتال. 256 00:12:34,010 --> 00:12:36,730 یہ اصل میں ہے buggy1.c کے لئے ماخذ کوڈ. 257 00:12:36,730 --> 00:12:38,855 تو میں واقعی کرنے کی ضرورت ہے اپنے پروگرام کو حل کرنے کے لئے یہاں ہے، 258 00:12:38,855 --> 00:12:40,835 سنبھالنے میں ہے ، ہے میرے سامنے دائر 259 00:12:40,835 --> 00:12:44,740 صرف بنانے کے لئے ایک چیک شامل کرنے کے لئے اس بات کا یقین ہے اس argc 2 کے برابر ہے. 260 00:12:44,740 --> 00:12:47,780 تو اس مثال، پھر میں،، نے کہا صحیح، تھوڑا سا کر contrived ہے؟ 261 00:12:47,780 --> 00:12:49,840 آپ عام طور پر نہیں کر رہے ہیں اتفاقی طور پر آپ کے منبع کوڈ کو خارج کر دیں 262 00:12:49,840 --> 00:12:51,820 اور اس کے بعد کی کوشش کی ہے اور پروگرام ڈیبگ. 263 00:12:51,820 --> 00:12:53,120 لیکن امید ہے کہ، اسے دیا آپ کو ایک مثال 264 00:12:53,120 --> 00:12:55,120 چیزوں کی قسم کے آپ کے بارے میں سوچ کیا جا سکتا ہے 265 00:12:55,120 --> 00:12:56,610 کے طور پر آپ کو اپنے پروگرام ٹھیک کر رہے ہیں. 266 00:12:56,610 --> 00:12:58,760 >> یہاں معاملات کی حالت کیا ہے؟ 267 00:12:58,760 --> 00:13:00,510 کیا متغیر مجھے کیا کرنا ہے مجھ سے قابل رسائی ہے؟ 268 00:13:00,510 --> 00:13:03,600 کہاں بالکل میری پروگرام ہے کیا لائن پر، اجلاس ہونے کے تناظر، 269 00:13:03,600 --> 00:13:05,240 کیا تقریب میں کیا کہتے ہیں؟ 270 00:13:05,240 --> 00:13:06,952 سراگ کی کس قسم کی ہے کہ مجھے دیتا ہے؟ 271 00:13:06,952 --> 00:13:08,910 اور یہ کہ بالکل وہی جو ہے ذہنیت کی قسم ہے کہ آپ کو 272 00:13:08,910 --> 00:13:12,820 تم جب میں ہو رہی ہے کیا جانا چاہئے آپ کے پروگراموں ٹھیک کے بارے میں سوچ. 273 00:13:12,820 --> 00:13:13,820 >> میں ڈوگ لایڈ ہوں. 274 00:13:13,820 --> 00:13:16,140 یہ CS50 ہے. 275 00:13:16,140 --> 00:15:08,642