1 00:00:00,000 --> 00:00:00,309 2 00:00:00,309 --> 00:00:02,350 [؟ DAN ARMADARAS:] مرحبا، أنا [؟ دان Armadaras؟]. 3 00:00:02,350 --> 00:00:04,410 اليوم، ونحن في طريقنا ل أن تبحث في التصحيح. 4 00:00:04,410 --> 00:00:06,697 ليس فقط نحن ذاهبون ل نتحدث عن بعض التقنيات، 5 00:00:06,697 --> 00:00:09,280 ولكن أيضا نحن في طريقنا للبحث في بعض الميزات الواردة 6 00:00:09,280 --> 00:00:14,170 داخل IDE CS50 التي تسمح لك لتصحيح بسهولة برنامج. 7 00:00:14,170 --> 00:00:16,272 >> مجرد مثال واحد من شيء يمكن أن تذهب الخطأ 8 00:00:16,272 --> 00:00:18,730 وانها في الواقع شيئا بعد أن قمنا بالفعل مثيل من قبل. 9 00:00:18,730 --> 00:00:23,200 في هذه الحالة، وهذا هو برنامج C يقبل عدد صحيح من المستخدم، 10 00:00:23,200 --> 00:00:27,580 يقسم من قبل اثنين، ويوفر العودة إلى المستخدم الانتاج. 11 00:00:27,580 --> 00:00:30,610 الآن عما رأيناه في وقت سابق من المحاضرات، 12 00:00:30,610 --> 00:00:34,370 ونحن نعلم أن هذا سوف يسبب في الواقع أنواع محددة من مشاكل الانقسام 13 00:00:34,370 --> 00:00:35,860 عندما يكون لدينا الأعداد الفردية. 14 00:00:35,860 --> 00:00:40,330 >> على وجه التحديد، ونحن سوف مجرد رمي بعيدا أي شيء بعد الفاصلة العشرية. 15 00:00:40,330 --> 00:00:43,170 الآن، ونحن نعلم أن هذا يحدث أن تكون هذه القضية. 16 00:00:43,170 --> 00:00:47,430 وإذا كنا تشغيله، يمكننا أن نؤكد شكوكنا، أولا، عن طريق تجميع. 17 00:00:47,430 --> 00:00:50,460 وبعد ذلك، عن طريق تشغيل و دخول عدد فردي. 18 00:00:50,460 --> 00:00:51,720 >> هذا ليس شيئا جديدا. 19 00:00:51,720 --> 00:00:54,490 ولكن هذا هو الواقع مثال على الخلل الذي 20 00:00:54,490 --> 00:00:58,810 يمكن أن توجد ضمن برنامج أوسع أن يصبح من الصعب تعقب. 21 00:00:58,810 --> 00:01:02,640 على الرغم من أننا نعرف ما هي القضية هو، وجوهر الحقيقي لهذه المسألة 22 00:01:02,640 --> 00:01:06,250 قد يكون محاولة لتحديد على وجه التحديد حيث يحدث الخطأ، 23 00:01:06,250 --> 00:01:09,750 تحديد ما هذه المشكلة هو، ومن ثم تحديد ذلك. 24 00:01:09,750 --> 00:01:14,400 لذلك نقدم هذا كمثال ما قد يكون شيئا 25 00:01:14,400 --> 00:01:19,030 ونحن نعلم بالفعل ولكن يمكن أن يدفن ضمن عناصر أخرى من التعليمات البرمجية. 26 00:01:19,030 --> 00:01:23,090 >> حتى فتح هذا مصدر آخر ملف التعليمات البرمجية على سبيل المثال، 27 00:01:23,090 --> 00:01:27,165 هذه المشكلة تقسيم الآن جزء من برنامج أكبر. 28 00:01:27,165 --> 00:01:29,040 لا يزال قد يكون قليلا بت مفتعلا، ونحن 29 00:01:29,040 --> 00:01:31,076 قد تكون قادرة بسهولة التعرف عليه، وخاصة 30 00:01:31,076 --> 00:01:32,450 منذ نحن مجرد مناقشة هذا الأمر. 31 00:01:32,450 --> 00:01:38,250 ولكن يمكننا معرفة أن هذا يمكن أن توجد مشكلة على نطاق أوسع. 32 00:01:38,250 --> 00:01:45,450 >> إذا كنت تجميع هذه والآن تشغيله، أدخل عدد فردي، 33 00:01:45,450 --> 00:01:49,816 يمكننا أن نرى أن لم نحصل على وجه التحديد الإخراج الذي كنا قد يكون من المتوقع. 34 00:01:49,816 --> 00:01:51,690 في هذه الحالة بالذات، يمكننا القول بأننا 35 00:01:51,690 --> 00:01:56,060 نريد أن نعتمد على جميع الأرقام من واحدة تصل إلى بعض عدد محدد. 36 00:01:56,060 --> 00:01:58,130 ويمكننا أن نرى أننا لدينا مجموعة متنوعة من القضايا 37 00:01:58,130 --> 00:02:03,880 هنا إذا نحن إخراج، ببساطة، 0 و1 عندما نقدم مدخلا من 5. 38 00:02:03,880 --> 00:02:07,380 >> لذلك نحن نعرف بالفعل أن هناك مشكلة هنا. 39 00:02:07,380 --> 00:02:11,662 لكننا قد لا نعرف على وجه الدقة حيث هذه المسألة موجود بالفعل. 40 00:02:11,662 --> 00:02:13,620 الآن واحدة من الطرق التي يمكننا محاولة لإصلاح هذه 41 00:02:13,620 --> 00:02:15,745 هو الشيء الذي قمنا تم عرض ل. 42 00:02:15,745 --> 00:02:18,880 يمكننا أن مجرد استخدامه على نطاق أوسع. 43 00:02:18,880 --> 00:02:21,680 >> على خط 14، لدينا هذه وظيفة printf، 44 00:02:21,680 --> 00:02:25,620 والذي يسمح لنا لطباعة الدولة من أجزاء مختلفة من المعلومات. 45 00:02:25,620 --> 00:02:28,880 وهذا هو ما كنت يجب الاستفادة من ضمن البرنامج 46 00:02:28,880 --> 00:02:33,100 في محاولة لمعرفة بالضبط ما هو يحدث في خطوط مختلفة من التعليمات البرمجية. 47 00:02:33,100 --> 00:02:36,350 لذلك حتى لو لم تكن هذه هي الناتج النهائي أننا في الواقع 48 00:02:36,350 --> 00:02:39,830 تريد أن تنتج من هذا البرنامج، فإننا لا نزال 49 00:02:39,830 --> 00:02:42,300 قد يكون لديك بعض التصحيح تصريحات أين نحن 50 00:02:42,300 --> 00:02:46,970 يمكن محاولة لمعرفة بالضبط ما يحدث داخل نظامنا. 51 00:02:46,970 --> 00:02:51,210 >> حتى في هذه الحالة، وسوف printf مع العلامة التصحيح. 52 00:02:51,210 --> 00:02:53,540 في هذه الحالة، وهذا هو مجرد سلسلة التصحيح 53 00:02:53,540 --> 00:02:56,840 أنني بحيث يصبح-طرح واضح جدا في إخراج قانون بلدي 54 00:02:56,840 --> 00:02:59,200 ما الذي أريد أن تظهر. 55 00:02:59,200 --> 00:03:04,410 والمخرجات هنا عدد أننا حسابها. 56 00:03:04,410 --> 00:03:06,800 >> في هذه الحالة، وأنا قد تريد أن تعرف بالضبط 57 00:03:06,800 --> 00:03:11,380 ما يحدث قبل و بعد بعض حساب معين. 58 00:03:11,380 --> 00:03:16,224 لذلك أنا قد تستخدم printf قبل وبعد أن سطر من التعليمات البرمجية. 59 00:03:16,224 --> 00:03:18,640 في هذه الحالة، لم أستطع حتى جعله أكثر قليلا واضحة 60 00:03:18,640 --> 00:03:21,960 بالقول التصحيح قبل والتصحيح بعد ذلك 61 00:03:21,960 --> 00:03:26,540 أنني لا نخلط بين نفسي عدة أسطر التي تبدو متطابقة. 62 00:03:26,540 --> 00:03:32,290 >> الآن إذا كنا إعادة ترجمة هذه وتشغيل ذلك، إدخال رقم مثل خمسة من جديد، 63 00:03:32,290 --> 00:03:35,090 يمكننا أن نرى أن لدينا الآن الانتاج قبل وبعد 64 00:03:35,090 --> 00:03:40,670 وتجد أننا لم تفعل واضح تقسيم واضح أو وجود عدد 65 00:03:40,670 --> 00:03:43,680 أننا فعلا تريد أن تفعل. 66 00:03:43,680 --> 00:03:48,660 الآن في هذه الحالة، وهذا هو ليس حقا الإخراج واضح. 67 00:03:48,660 --> 00:03:52,440 انها ليست حقا نتائج واضحة نريد من هذا البرنامج بالذات. 68 00:03:52,440 --> 00:03:54,427 >> وهذا هو، مرة أخرى، قليلا مفتعلا. 69 00:03:54,427 --> 00:03:57,510 ولكن، ربما، واحدة من الأشياء التي أننا يمكن أن نفعل إذا قالت مواصفات 70 00:03:57,510 --> 00:04:01,900 أننا نريد أن نقسم هذا من قبل 2 وإضافة 1-- ذلك وبعبارة أخرى، 71 00:04:01,900 --> 00:04:04,550 نحن نريد لجولة up-- ثم ونحن قد نعلم أننا يمكن أن 72 00:04:04,550 --> 00:04:08,060 تفعل هذا الشيء خاص، في هذه الحالة. 73 00:04:08,060 --> 00:04:14,010 الآن هنا نعلم أننا سنكون قادرة على إضافة 1 إلى الرقم إلى النصف. 74 00:04:14,010 --> 00:04:16,490 >> دعونا إعادة ترجمة هذا وأكد أن هذا 75 00:04:16,490 --> 00:04:18,860 يتصرف بالطريقة التي نريد. 76 00:04:18,860 --> 00:04:21,980 يمكننا أن نرى ذلك الآن قبل وجود، لدينا عدد 5. 77 00:04:21,980 --> 00:04:26,620 وبعد، لدينا عدد 3، والتي وفقا لمواصفات لدينا، 78 00:04:26,620 --> 00:04:29,292 هو ما كنا نريد القيام به. 79 00:04:29,292 --> 00:04:31,000 ولكن إذا نظرنا إلى الناتج هنا، يمكننا 80 00:04:31,000 --> 00:04:33,760 نرى أننا قد يكون آخر علة تماما، وهو 81 00:04:33,760 --> 00:04:36,940 أننا بدأنا العد لدينا من 0. 82 00:04:36,940 --> 00:04:39,390 >> الآن مرة أخرى، وهذا شيء التي شهدناها في الماضي 83 00:04:39,390 --> 00:04:42,500 ونحن يمكن اصلاحها بسهولة تامة. 84 00:04:42,500 --> 00:04:44,790 ولكن في هذه الحالة، فإننا كما كان صالح 85 00:04:44,790 --> 00:04:48,940 من استخدام العبارة printf مباشرة من داخل لحلقة 86 00:04:48,940 --> 00:04:52,930 لنعرف بالضبط أين أن الخطأ كان يحدث. 87 00:04:52,930 --> 00:04:55,150 البيانات printf لذلك هي مفيدة جدا في المساعدة 88 00:04:55,150 --> 00:04:57,940 يمكنك تحديد مكان، على وجه التحديد في التعليمات البرمجية المصدر، 89 00:04:57,940 --> 00:05:00,620 خطأ معينة يحدث. 90 00:05:00,620 --> 00:05:03,650 >> ومن المهم أيضا أن ندرك هذا، ونحن كتابة التعليمات البرمجية، 91 00:05:03,650 --> 00:05:06,052 قد يكون لدينا الافتراضات حول حالة البرنامج. 92 00:05:06,052 --> 00:05:08,510 أو ربما لدينا الافتراضات عن أي جزء من البرنامج 93 00:05:08,510 --> 00:05:13,020 غير صحيحة أو غير صحيحة في الواقع عندما في وقت لاحق ونحن نبني على هذا البرنامج 94 00:05:13,020 --> 00:05:15,950 وجعلها جزءا من مجمع وبرنامج أكبر 95 00:05:15,950 --> 00:05:19,700 أن ندرك أن بعض جوانب لذلك هو في الواقع عربات التي تجرها الدواب. 96 00:05:19,700 --> 00:05:22,680 >> يمكن استخدام printf تساعد حقا تضييق وتحديد 97 00:05:22,680 --> 00:05:26,430 مناطق البرنامج الذي لا يجوز أن يتصرف بنفس الطريقة التي كنا 98 00:05:26,430 --> 00:05:29,500 نتوقع، على أساس الافتراضات لدينا. 99 00:05:29,500 --> 00:05:31,460 ولكن هناك أدوات أخرى المتاحة، وكذلك، 100 00:05:31,460 --> 00:05:34,860 التي تسمح لنا لمحاولة الرقم من أين يحدث خطأ 101 00:05:34,860 --> 00:05:39,930 وأيضا، على وجه التحديد، ما هي الأشياء ويحدث داخل البرنامج. 102 00:05:39,930 --> 00:05:41,990 >> وذلك باستخدام printf جدا عندما نريد مفيدة 103 00:05:41,990 --> 00:05:45,900 للتعرف على مجالات محددة من برنامج لديها بعض الشوائب. 104 00:05:45,900 --> 00:05:47,730 ولكنه يصبح أيضا مملة بعد حين. 105 00:05:47,730 --> 00:05:50,500 في هذه الحالة، وهذا هو برنامج بسيط نسبيا 106 00:05:50,500 --> 00:05:52,750 مع واحد فقط أو اثنين من المتغيرات. 107 00:05:52,750 --> 00:05:57,260 ويصبح من السهل جدا بالنسبة لنا ل طباعة قيمة تلك المتغيرات 108 00:05:57,260 --> 00:05:59,670 في سياق برنامج أكبر. 109 00:05:59,670 --> 00:06:02,670 >> ولكن قد يكون لدينا مختلفة البرنامج يحتوي على العديد من المتغيرات. 110 00:06:02,670 --> 00:06:06,530 وأنه قد لا يكون تماما من السهل جدا استخدام printf 111 00:06:06,530 --> 00:06:10,120 في محاولة لتقييم ما يحدث إلى كل واحد من هذه المتغيرات 112 00:06:10,120 --> 00:06:13,590 كما أن البرنامج المنفذة. 113 00:06:13,590 --> 00:06:16,960 هناك برنامج موجود دعا برنامج المصحح. 114 00:06:16,960 --> 00:06:20,320 في هذه الحالة، واحد أننا سوف استخدام غير المصحح GNU، أو GDB، 115 00:06:20,320 --> 00:06:24,260 التي تسمح لنا لتفقد الداخلية عمل برنامج في أكثر من ذلك بكثير 116 00:06:24,260 --> 00:06:25,700 طريقة مفصلة. 117 00:06:25,700 --> 00:06:28,810 >> يمكن أن نقوم بتنفيذ الواقع GDB من سطر الأوامر 118 00:06:28,810 --> 00:06:35,370 هنا ببساطة عن طريق كتابة GDB و الأمر الذي نريد تصحيحه. 119 00:06:35,370 --> 00:06:37,550 في هذه الحالة، عد. 120 00:06:37,550 --> 00:06:41,650 الآن في هذه الحالة، يمكننا أن نرى أنه يقودنا إلى موجه تقول GDB. 121 00:06:41,650 --> 00:06:44,020 ويمكننا في الواقع تنفيذ الأوامر لGDB 122 00:06:44,020 --> 00:06:48,260 لتبدأ فعلا تنفيذ برنامج، والتوقف عن ذلك في بعض النقاط، 123 00:06:48,260 --> 00:06:51,060 تقييم المتغيرات و تفقد المتغيرات التي 124 00:06:51,060 --> 00:06:54,152 توجد في ولاية البرنامج في تلك اللحظة بالذات، 125 00:06:54,152 --> 00:06:55,110 وهلم جرا وهكذا دواليك. 126 00:06:55,110 --> 00:06:57,240 أنه يوفر الكثير من الطاقة بالنسبة لنا. 127 00:06:57,240 --> 00:06:59,960 >> ولكن فقط يحدث ذلك أن IDE CS50 أيضا 128 00:06:59,960 --> 00:07:05,870 يوفر واجهة المستخدم الرسومية أو مستخدم واجهة لGDB أن 129 00:07:05,870 --> 00:07:11,120 يسمح لنا أن نفعل هذا دون الحاجة واجهة سطر الأوامر على الإطلاق 130 00:07:11,120 --> 00:07:13,560 أو على الإطلاق حتى. 131 00:07:13,560 --> 00:07:16,930 الطريقة التي يمكنني الوصول إلى ذلك غير باستخدام زر التصحيح 132 00:07:16,930 --> 00:07:20,120 في أعلى جدا من IDE CS50. 133 00:07:20,120 --> 00:07:24,280 الآن في الماضي، ما لدينا يرى هو أن نستخدم الأمر 134 00:07:24,280 --> 00:07:27,660 خط لتجميع ومن ثم تشغيل البرنامج. 135 00:07:27,660 --> 00:07:29,790 >> زر التصحيح لا كل من هذه الخطوات. 136 00:07:29,790 --> 00:07:34,380 ولكنه أيضا سوف طرح علامة التبويب المصحح على اليمين المتطرف 137 00:07:34,380 --> 00:07:38,280 التي تسمح لنا لتفقد مجموعة متنوعة من خصائص البرنامج 138 00:07:38,280 --> 00:07:40,500 كما يتم تنفيذ. 139 00:07:40,500 --> 00:07:44,280 إذا كنت اضغط التصحيح، في هذا الحالة، فإنه سيجلب 140 00:07:44,280 --> 00:07:48,230 علامة تبويب جديدة في وحدة تحكم نافذة في أسفل جدا. 141 00:07:48,230 --> 00:07:51,160 >> ويمكنك أن ترى أن هذا التبويب له بعض المعلومات في أعلى جدا. 142 00:07:51,160 --> 00:07:52,670 ويمكننا تجاهل هذا إلى حد كبير. 143 00:07:52,670 --> 00:07:54,800 ولكن واحدة من الأشياء أننا نريد أن تلاحظ 144 00:07:54,800 --> 00:07:57,170 غير أنه النواتج نفس الشيء الذي نحن 145 00:07:57,170 --> 00:08:03,000 سيحصل إذا حاولنا تشغيل جعل على برنامج C في إطار المحطة الطرفية. 146 00:08:03,000 --> 00:08:06,230 >> هنا، يمكننا أن نرى انها تعمل رنة، ولها مجموعة متنوعة من الأعلام، 147 00:08:06,230 --> 00:08:12,660 ويتم تجميع ملف count.c لدينا، الذي كان علامة التبويب المحددة في الوقت 148 00:08:12,660 --> 00:08:15,100 أنني ضرب التصحيح. 149 00:08:15,100 --> 00:08:18,010 لذلك هذا هو مفيد جدا ل الآن باستخدام هذا الزر التصحيح، 150 00:08:18,010 --> 00:08:23,280 يمكننا تجميع في وقت واحد ثم تنفيذ البرنامج الذي نحن في الواقع 151 00:08:23,280 --> 00:08:24,460 تريد تشغيله. 152 00:08:24,460 --> 00:08:27,880 >> واحد من أعلام هذا هو المهم، في هذه الحالة، 153 00:08:27,880 --> 00:08:30,190 كنا فعلا باستخدام لأطول فترة 154 00:08:30,190 --> 00:08:32,450 ولكن أيضا لم يفعلوا بعض اليد التلويح (غير مسموع)، التي 155 00:08:32,450 --> 00:08:33,820 هو هذا الحق واحد هنا. 156 00:08:33,820 --> 00:08:35,790 في رنة، تقول -ggdb3. 157 00:08:35,790 --> 00:08:38,570 158 00:08:38,570 --> 00:08:41,250 في هذه الحالة، ما نحن عليه يقول رنة، مترجم لدينا، 159 00:08:41,250 --> 00:08:43,820 هو أننا نريد لتجميع برنامجنا. 160 00:08:43,820 --> 00:08:46,810 ولكن أيضا توفير ما هي دعا معلومات الرمز 161 00:08:46,810 --> 00:08:50,940 ذلك أن المترجم له في الواقع وصول إلى الكثير من المعلومات الأساسية 162 00:08:50,940 --> 00:08:52,610 الواردة في البرنامج. 163 00:08:52,610 --> 00:08:55,260 >> وبشكل أكثر تحديدا، وعدد من الوظائف التي لدي، 164 00:08:55,260 --> 00:08:58,000 أسماء تلك الوظائف، المتغيرات، وأنواع 165 00:08:58,000 --> 00:09:01,730 أن تلك المتغيرات، ومجموعة متنوعة من الأمور الأخرى التي تساعد على المصحح 166 00:09:01,730 --> 00:09:04,350 أداء عملها. 167 00:09:04,350 --> 00:09:06,600 الآن هناك شيء آخر أن من المهم أن نذكر 168 00:09:06,600 --> 00:09:10,280 عندما نناقش تشغيل برنامج في هذا السبيل. 169 00:09:10,280 --> 00:09:13,660 >> لاحظ أنه في الواقع ترعرعت علامة تبويب جديدة في وحدة التحكم لدينا 170 00:09:13,660 --> 00:09:14,780 على طول الجزء السفلي. 171 00:09:14,780 --> 00:09:18,600 لم يعد لدينا للتفاعل مباشرة مع إطار المحطة الطرفية. 172 00:09:18,600 --> 00:09:21,420 ولكن هذا التبويب الجديد في الواقع نافذة الصالة. 173 00:09:21,420 --> 00:09:26,710 هو فقط غير محددة لتسيير البرنامج الذي قمنا بإنشائه. 174 00:09:26,710 --> 00:09:29,270 >> لاحظ أن في الجزء السفلي، في بالاشتراك مع بعض الانتاج 175 00:09:29,270 --> 00:09:33,500 بواسطة رنة المترجم وGDB، التي يمكننا تجاهل إلى حد كبير، 176 00:09:33,500 --> 00:09:37,570 فإنه يدل في الواقع ناتج برنامجنا في أسفل جدا. 177 00:09:37,570 --> 00:09:41,240 الآن من المهم أن ندرك أن هذا نافذة واحدة في الواقع 178 00:09:41,240 --> 00:09:43,360 سوف تظهر لك الإخراج من البرنامج 179 00:09:43,360 --> 00:09:47,190 ولكن أيضا لا يمكن أن يقبل مدخلات لهذا البرنامج، كذلك. 180 00:09:47,190 --> 00:09:49,260 >> لذلك لاحظ أن يقول الرجاء إدخال رقم، 181 00:09:49,260 --> 00:09:53,050 وهو نفس الإخراج الذي كان لدينا كان في إطار المحطة الطرفية قبل. 182 00:09:53,050 --> 00:09:55,510 لكنها تظهر الآن في هذا التبويب الجديد. 183 00:09:55,510 --> 00:09:56,550 يمكنني إدخال الرقم. 184 00:09:56,550 --> 00:10:00,900 وسوف فعلا وظيفة ونحن نتوقع 185 00:10:00,900 --> 00:10:05,890 تبين لنا التصحيح لدينا، خرج، الإخراج الذي قد يكون عربات التي تجرها الدواب، 186 00:10:05,890 --> 00:10:07,010 كما رأينا من قبل. 187 00:10:07,010 --> 00:10:10,460 وعلى الجزء السفلي للغاية، فإنه في الواقع بعض إخراج إضافية 188 00:10:10,460 --> 00:10:14,550 من الناتج المحلي الإجمالي فقط أقول أن وقد اكتمل هذا البرنامج. 189 00:10:14,550 --> 00:10:16,655 >> الآن كما رأيتم في هذا تشغيل معين من خلال، 190 00:10:16,655 --> 00:10:19,370 لم يكن على وجه الخصوص مفيد لأنه حتى 191 00:10:19,370 --> 00:10:23,740 على الرغم من أننا قد القائمة المصحح تأتي يصل، لا يزال هذا برنامج تشغيل. 192 00:10:23,740 --> 00:10:26,790 في أي نقطة فعلت ذلك فعلا إيقاف التنفيذ بالنسبة لنا 193 00:10:26,790 --> 00:10:30,767 لتكون قادرة على تفقد جميع المتغيرات الواردة في. 194 00:10:30,767 --> 00:10:32,850 هناك شيء آخر أن علينا أن نفعل من أجل 195 00:10:32,850 --> 00:10:36,910 للحصول على GDB أن ندرك أننا نريد وقفة تنفيذ البرنامج 196 00:10:36,910 --> 00:10:42,820 وليس مجرد السماح لها للشروع عادة كما كنا في أي حالة أخرى. 197 00:10:42,820 --> 00:10:45,530 >> من أجل إيقاف التنفيذ، في بعض خط معين، 198 00:10:45,530 --> 00:10:47,830 نحن بحاجة إلى إنشاء ما دعا نقطة فاصل. 199 00:10:47,830 --> 00:10:52,670 ويتم إنشاء نقطة فاصل بسهولة جدا في هذا CS50 IDE عن طريق اتخاذ الفأرة 200 00:10:52,670 --> 00:10:57,090 والنقر مباشرة على يسار بعض رقم خط معين. 201 00:10:57,090 --> 00:10:59,920 مرة واحدة أن أفعل ذلك، نقطة حمراء يبدو، مما يدل على 202 00:10:59,920 --> 00:11:02,300 أن هذا الخط هو الآن نقطة فاصل. 203 00:11:02,300 --> 00:11:07,540 >> والمرة التالية التي أركض GDB، فإنه سيتم إيقاف التنفيذ عند هذه النقطة استراحة 204 00:11:07,540 --> 00:11:10,280 عندما يصل هذا الخط من التعليمات البرمجية. 205 00:11:10,280 --> 00:11:12,230 الآن هذا هو المهم شيء لتحقيق 206 00:11:12,230 --> 00:11:16,140 انها ليست بالضرورة حالة أن كل سطر من التعليمات البرمجية 207 00:11:16,140 --> 00:11:17,880 يمكن الوصول إليها فعلا. 208 00:11:17,880 --> 00:11:23,780 إذا كان لي أن إنشاء وظيفة هنا، لf-- الفراغ example-- 209 00:11:23,780 --> 00:11:31,230 ومجرد القيام خط الطباعة here-- مرحبا world-- لو لم استدعاء هذه الدالة، 210 00:11:31,230 --> 00:11:34,770 وسوف يكون هذا هو الحال، إذا أنا وضعت نقطة فاصل هنا، 211 00:11:34,770 --> 00:11:36,220 لن يتم استدعاء الدالة. 212 00:11:36,220 --> 00:11:38,310 وبالتالي، فإن هذا خاصة نقطة فاصل 213 00:11:38,310 --> 00:11:43,040 لن نتوقف فعلا تنفيذ البرنامج. 214 00:11:43,040 --> 00:11:48,020 >> لذلك دعونا نقول أن أخلق بشكل صحيح نقطة فاصل على بعض سطر من التعليمات البرمجية 215 00:11:48,020 --> 00:11:50,340 التي سوف يتم تنفيذها في الواقع. 216 00:11:50,340 --> 00:11:53,470 الآن في هذه الحالة، وهذا هو السطر الأول في الوظيفة الرئيسية. 217 00:11:53,470 --> 00:11:56,630 لذلك سوف يكون بالتأكيد حالة أنه بمجرد أن أبدأ التنفيذ، 218 00:11:56,630 --> 00:11:58,580 سيتم التوصل إلى السطر الأول للغاية. 219 00:11:58,580 --> 00:12:00,230 سوف GDB إيقاف التنفيذ. 220 00:12:00,230 --> 00:12:04,100 وبعد ذلك، وسوف تكون قادرة على التفاعل مع المصحح. 221 00:12:04,100 --> 00:12:08,480 >> يمكنك تعيين خطوط متعددة كما نقاط، إذا كنت ترغب. 222 00:12:08,480 --> 00:12:11,365 يمكننا أيضا إنشاء خط يصل هنا في هذا الجزء من التعليمات البرمجية 223 00:12:11,365 --> 00:12:12,490 التي لن يتم التوصل إليها. 224 00:12:12,490 --> 00:12:14,744 ويمكننا أيضا مجموعة واحدة أدناه. 225 00:12:14,744 --> 00:12:16,660 السبب الذي كنا تريد أن تفعل هذا وسوف نقوم 226 00:12:16,660 --> 00:12:19,119 الذهاب إلى أكثر قليلا التفاصيل في مجرد لحظة. 227 00:12:19,119 --> 00:12:21,660 حتى الآن، اسمحوا لي أن تعطيل فقط هذه النقاط استراحة إضافية 228 00:12:21,660 --> 00:12:24,940 بحيث يمكننا أن ننظر إلى ما يحدث عندما يكون لدي كسر واحد 229 00:12:24,940 --> 00:12:27,650 نقطة في برنامجي. 230 00:12:27,650 --> 00:12:29,410 لقد جعلت بعض تغييرات على هذا البرنامج. 231 00:12:29,410 --> 00:12:30,750 لذلك أنا بحاجة لحفظه. 232 00:12:30,750 --> 00:12:34,490 وسوف انقر التصحيح حتى أستطيع أن بدء تجميع ثم 233 00:12:34,490 --> 00:12:36,880 تنفيذ المصحح. 234 00:12:36,880 --> 00:12:40,632 >> سوف نرى أنه بعد لحظات، و الخط الذي اخترنا كما في الشوط الثاني 235 00:12:40,632 --> 00:12:43,360 يتم تمييز نقطة باللون الأصفر. 236 00:12:43,360 --> 00:12:47,440 يمكننا أيضا أن نلاحظ أن في الحق العلوي في لوحة التصحيح 237 00:12:47,440 --> 00:12:50,940 أن رمز قفة تحول إلى رمز اللعب قليلا. 238 00:12:50,940 --> 00:12:54,710 وهذا يعني أن لدينا وقفة التنفيذ، في هذه الحالة بالذات. 239 00:12:54,710 --> 00:12:57,840 وضرب على زر التشغيل سوف تتيح لنا استئناف التنفيذ 240 00:12:57,840 --> 00:13:00,000 عند هذه النقطة المحددة. 241 00:13:00,000 --> 00:13:03,240 >> لاحظ أن هناك زوجين من الآخر الأزرار المتاحة في هذا الفريق التصحيح، 242 00:13:03,240 --> 00:13:04,220 كذلك. 243 00:13:04,220 --> 00:13:09,470 خطوة على، الذي يتيح لي الفرصة ل تنفيذ هذا سطر واحد من التعليمات البرمجية 244 00:13:09,470 --> 00:13:14,030 وخطوة الى هذا الخط ل واحدة المقبل، والتي، في هذه الحالة، 245 00:13:14,030 --> 00:13:17,060 يعني أن printf يتم تنفيذ البيان. 246 00:13:17,060 --> 00:13:22,310 وسوف نتوقف ثم التنفيذ على خط 13، مثل ذلك. 247 00:13:22,310 --> 00:13:25,090 >> وهناك أيضا خطوة في وظيفة، والتي 248 00:13:25,090 --> 00:13:28,950 مفيد إذا كنت قد خلقت الآخرين وظائف في أماكن أخرى من شفرة المصدر. 249 00:13:28,950 --> 00:13:31,420 وأريد أن خطوة الى هذه الوظائف بدلا من 250 00:13:31,420 --> 00:13:33,050 تنفيذ هذه المهمة ككل. 251 00:13:33,050 --> 00:13:37,279 ولكننا سوف تبدو أكثر في الخطوة إلى وظيفة في مجرد لحظة. 252 00:13:37,279 --> 00:13:40,320 الآن تلاحظ بعض الأشياء الأخرى التي موجودة فعلا داخل هذا الفريق التصحيح. 253 00:13:40,320 --> 00:13:44,110 >> لدينا تسمى هذه اللوحة ل استدعاء المكدس، الذي يبين لنا 254 00:13:44,110 --> 00:13:45,300 بالضبط أين نحن. 255 00:13:45,300 --> 00:13:48,550 في هذه الحالة، نحن في الداخل وظيفة الرئيسية. 256 00:13:48,550 --> 00:13:50,880 ويسمى لدينا النصي count.c. 257 00:13:50,880 --> 00:13:53,820 ويحدث لأننا نكون على خط 13، عمود واحد، والتي 258 00:13:53,820 --> 00:13:58,950 هو بالضبط ما أبرز المنطقة من شفرة المصدر يشير أيضا. 259 00:13:58,950 --> 00:14:02,435 >> لاحظ الآن أن هذا يدل أيضا تحت القسم المتغير المحلي 260 00:14:02,435 --> 00:14:06,710 كل المتغيرات التي توجد داخل هذه الوظيفة. 261 00:14:06,710 --> 00:14:08,930 من المهم أن نلاحظ أن جميع المتغيرات 262 00:14:08,930 --> 00:14:12,580 سوف تظهر في هذا المتغير المحلي القسم داخل دالة، 263 00:14:12,580 --> 00:14:14,380 حتى قبل أن يتم تعريفها. 264 00:14:14,380 --> 00:14:19,160 يمكننا أن نرى هنا أن لدينا متغير دعا الأسطوانات، له قيمة افتراضية من 0، 265 00:14:19,160 --> 00:14:21,280 وأنه هو من نوع int. 266 00:14:21,280 --> 00:14:24,110 >> الآن قبل أن تهيئة الواقع كل من هذه المتغيرات، 267 00:14:24,110 --> 00:14:26,685 نحن لسنا بالضرورة مضمونة لمعرفة قيمة 0. 268 00:14:26,685 --> 00:14:29,200 واعتمادا على إعدام أخرى ان كنت قد أنجزت 269 00:14:29,200 --> 00:14:32,020 وحالة الذاكرة الخاصة بك عندما كنت في الواقع تشغيل هذا البرنامج، 270 00:14:32,020 --> 00:14:34,605 قد تجد أنك لا أرى قيم 0 271 00:14:34,605 --> 00:14:36,550 وبدلا من ذلك، بعض الأرقام مجنون أخرى. 272 00:14:36,550 --> 00:14:38,390 >> ولكن لا تقلق بشأن ذلك. 273 00:14:38,390 --> 00:14:44,610 انها لن تكون ذات صلة حتى كنت في الواقع تهيئة قيمة. 274 00:14:44,610 --> 00:14:49,630 الآن في هذه الحالة، يمكننا أن نرى أن لقد أجريت بعض النواتج. 275 00:14:49,630 --> 00:14:52,131 وأنا، الآن، توقف التنفيذ. 276 00:14:52,131 --> 00:14:53,880 ولكن في هذه الحالة، ما أنا حقا تريد أن تفعل 277 00:14:53,880 --> 00:14:58,060 غير أن الخطوة الآن على هذا الخط من التعليمات البرمجية بحيث يمكنني في الواقع 278 00:14:58,060 --> 00:15:04,390 الاستعلام المستخدم لهذا الباحث أن نحن نريد لاستخدامها في برنامجنا. 279 00:15:04,390 --> 00:15:07,060 >> الآن في هذه الحالة، عندما أنا ضربت خطوة أكثر، لاحظ 280 00:15:07,060 --> 00:15:11,940 أن وقفة أو بالأحرى استئناف لم يتغير الزر لهذا الزر وقفة 281 00:15:11,940 --> 00:15:14,022 لهذا الرمز المنفذة فعلا. 282 00:15:14,022 --> 00:15:15,730 ماذا يحدث الآن هو أنه 283 00:15:15,730 --> 00:15:21,630 ينتظرون منا لإدخال بعض المعلومات كما يمكننا أن نرى من خلال النص انتاجنا 284 00:15:21,630 --> 00:15:23,600 في الجزء السفلي جدا. 285 00:15:23,600 --> 00:15:25,787 >> حتى الآن، وهذا هو لا توقف في الواقع، 286 00:15:25,787 --> 00:15:28,620 على الرغم من ذلك، نوعا ما، يبدو ليكون ذلك بسبب لا شيء يحدث. 287 00:15:28,620 --> 00:15:32,360 ولكنه مجرد أن ذلك يحدث في حالتي محددة على خط 13، 288 00:15:32,360 --> 00:15:34,210 أنا في انتظار إدخال المستخدم. 289 00:15:34,210 --> 00:15:39,130 وهكذا GDB غير قادر على تفتيش برنامج لأنه قيد التشغيل. 290 00:15:39,130 --> 00:15:43,370 >> الآن في المرة التالية التي أقوم بإدخال بعض input-- ولذا فإنني سوف أدخل هذا العدد 5، 291 00:15:43,370 --> 00:15:46,140 كما رأينا في past-- ضرب العودة، ونحن 292 00:15:46,140 --> 00:15:51,430 لاحظت أن، وعلى الفور، توقف GDB ومرة أخرى، يسلط الضوء على السطر التالي. 293 00:15:51,430 --> 00:15:55,320 ولكن لاحظ أن الآن، باعتباره نتيجة لدينا إدخال قيمة، 294 00:15:55,320 --> 00:15:58,930 لقد قمنا بتحديث هذه القيمة داخل المتغيرات المحلية الخاصة بنا، التي 295 00:15:58,930 --> 00:16:05,560 مفيد جدا أن نعرف على وجه التحديد ما هذا العدد كان في الذاكرة. 296 00:16:05,560 --> 00:16:10,650 >> الآن أستطيع أن يسمح هذا البرنامج للمتابعة اللعب حتى نهاية تنفيذه 297 00:16:10,650 --> 00:16:12,570 من خلال ضرب استئناف. 298 00:16:12,570 --> 00:16:16,410 يمكننا أن نرى أن بسرعة جدا لا الانتهاء من البرنامج المنفذة 299 00:16:16,410 --> 00:16:19,790 مع نفس المخرج أننا وكان من قبل، إغلاق المصحح، 300 00:16:19,790 --> 00:16:23,170 والآن هذا البرنامج وقد توقفت تماما. 301 00:16:23,170 --> 00:16:25,320 >> تبين لي أنه ليس هناك سوى ل أغراض رؤية ما 302 00:16:25,320 --> 00:16:27,280 يحدث عندما كنا في الواقع ضرب استئناف. 303 00:16:27,280 --> 00:16:30,640 لكننا في الواقع ذاهبون ل أريد أن أعود إلى هذا البرنامج 304 00:16:30,640 --> 00:16:33,820 حتى نتمكن من محاولة التصحيح بالضبط ما يحدث. 305 00:16:33,820 --> 00:16:37,980 أنا الآن أن استخدام المصحح، جاز لي لا تحتاج هذه البيانات التصحيح printf. 306 00:16:37,980 --> 00:16:43,860 >> حتى أتمكن من إزالتها كما سأفعل الآن فقط أن أعود إلى رمز بساطة لدينا 307 00:16:43,860 --> 00:16:45,950 أن كان لدينا قبل لحظة. 308 00:16:45,950 --> 00:16:48,790 الآن عندما إنقاذ البرنامج وتنفيذه، 309 00:16:48,790 --> 00:16:53,700 وعليه، مرة أخرى، انتقل إلى أنه الأولية كسر النقطة التي كان على خط 11. 310 00:16:53,700 --> 00:16:57,700 وسوف تكون قادرة على تفتيش المتغيرات بلدي وأنا أريد القيام به. 311 00:16:57,700 --> 00:17:00,695 >> فقط حتى يحدث ذلك هذا جزء غير مثيرة جدا للاهتمام، 312 00:17:00,695 --> 00:17:04,364 وأنا أعلم أنني ذاهب لطباعة هذا البيان. 313 00:17:04,364 --> 00:17:05,280 الرجاء إدخال رقم. 314 00:17:05,280 --> 00:17:08,099 وبعد ذلك، وأنا أعلم أنني ذاهب أن تطلب من المستخدم لهذا صحيحا. 315 00:17:08,099 --> 00:17:13,329 لذلك ربما، أنا فعلا أريد أن أحرك نقطة كسر أبعد قليلا إلى أسفل. 316 00:17:13,329 --> 00:17:16,710 >> يمكنك إزالة نقاط لكسر الارسال بالضغط، مرة أخرى، مباشرة 317 00:17:16,710 --> 00:17:18,460 إلى اليسار من هذا العدد الخط. 318 00:17:18,460 --> 00:17:22,200 أن النقطة الحمراء سوف تختفي، مشيرا إلى أن ذلك نقطة فاصل ذهب الآن. 319 00:17:22,200 --> 00:17:24,780 الآن في هذه الحالة، تم إيقاف التنفيذ. 320 00:17:24,780 --> 00:17:27,770 ولذا فإنه لن فعلا ل استئناف في هذا المثال معين. 321 00:17:27,770 --> 00:17:30,210 لكنني يمكن أن يحدد استراحة نشير في وقت لاحق قليلا. 322 00:17:30,210 --> 00:17:33,880 >> وعندما استأنف الآن بلدي رمز، فإنه سيتم استئناف وأقول 323 00:17:33,880 --> 00:17:36,190 نقطة من هذه النقطة الشوط الاول. 324 00:17:36,190 --> 00:17:37,374 مرة أخرى، أنا ضربت استئناف. 325 00:17:37,374 --> 00:17:39,040 لا يبدو مثل أي شيء يحدث. 326 00:17:39,040 --> 00:17:41,450 ولكن هذا لأن بلدي كود ينتظر الإدخال. 327 00:17:41,450 --> 00:17:47,900 وسوف إدخال رقم 5، هاهنا، و الآن سوف تضرب نقطة فاصل المقبلة. 328 00:17:47,900 --> 00:17:50,570 >> الآن في هذه الحالة، وهذا هو سطر من التعليمات البرمجية 329 00:17:50,570 --> 00:17:53,820 أنه قبل، كنا نعرف حدث أن يكون عربات التي تجرها الدواب. 330 00:17:53,820 --> 00:17:57,590 لذلك دعونا تقييم ما يحدث في هذه النقطة بالذات في الوقت المناسب. 331 00:17:57,590 --> 00:18:02,620 عندما يتم تسليط الضوء على الخط، وهذا لم يتم تنفيذ الخط. 332 00:18:02,620 --> 00:18:06,490 حتى في هذه الحالة، يمكننا أن نرى أن لدي العدد الذي 333 00:18:06,490 --> 00:18:11,610 لدي عدد صحيح يسمى الأسطوانات التي لديها قيمة 5. 334 00:18:11,610 --> 00:18:15,090 وانا ذاهب الى أن أداء بعض الرياضيات على هذا العدد. 335 00:18:15,090 --> 00:18:20,130 >> إذا كنت خطوة على ذلك، يمكننا لاحظ أن قيمة الأسطوانات 336 00:18:20,130 --> 00:18:23,780 لم يتغير وفقا لل الحساب الذي قمنا به فعلا. 337 00:18:23,780 --> 00:18:26,810 والآن ونحن داخل هذا عن حلقة 338 00:18:26,810 --> 00:18:29,090 أو الآن أن لحلقة يتم تمييز نفسها، 339 00:18:29,090 --> 00:18:32,450 ونحن نرى أن لدينا جديد متغير يسمى ط أن 340 00:18:32,450 --> 00:18:35,370 سوف يتم استخدامها في هذا للحلقة. 341 00:18:35,370 --> 00:18:38,230 >> الآن تذكر قبل أن I ذكر أنه في بعض الأحيان كنت 342 00:18:38,230 --> 00:18:43,470 سنرى نوعا من الجنون الأرقام كما الافتراضي قبل هذا العدد 343 00:18:43,470 --> 00:18:45,530 أو أن المتغير تهيئة الواقع. 344 00:18:45,530 --> 00:18:49,040 يمكننا أن نرى أن على وجه التحديد هنا في هذا المتغير 345 00:18:49,040 --> 00:18:51,345 دعا ط، الذي لم يتم تهيئة 346 00:18:51,345 --> 00:18:53,560 في وقت تبرز. 347 00:18:53,560 --> 00:18:57,070 ولكن يمكننا أن نرى أن لديها بعض رقم أننا لن نتوقع فعلا. 348 00:18:57,070 --> 00:18:57,620 >> وهذا موافق. 349 00:18:57,620 --> 00:18:59,661 لا تقلق بشأن هذا لأن لدينا لم يكن في الواقع 350 00:18:59,661 --> 00:19:04,970 تهيئة هذا العدد حتى أنا خطوة على هذا الخط والقيمة 351 00:19:04,970 --> 00:19:08,560 ط تمت تهيئة إلى القيمة 1. 352 00:19:08,560 --> 00:19:11,400 لذلك نرى أن هذا هو الواقع القضية، دعونا خطوة أكثر. 353 00:19:11,400 --> 00:19:14,420 يمكننا الآن أن نرى أن تم تنفيذ خط. 354 00:19:14,420 --> 00:19:17,000 ونحن تسليط الضوء الآن هذا الخط printf. 355 00:19:17,000 --> 00:19:22,230 >> ويمكننا أن نرى الآن كيف قيمنا ط و 3 قد تغيرت مع مرور الوقت. 356 00:19:22,230 --> 00:19:26,450 هذا مفيد جدا القيام به، في الواقع، هو إلى الخطوة عبر خطوط مرارا وتكرارا. 357 00:19:26,450 --> 00:19:30,480 ويمكنك أن تجد ما فعلا يحدث داخل لحلقة الخاص بك 358 00:19:30,480 --> 00:19:33,660 وما يحدث لل المتغيرات داخل ذلك للحلقة 359 00:19:33,660 --> 00:19:39,200 كما أن تنفيذ البرنامج يحدث خطوة واحدة في وقت واحد. 360 00:19:39,200 --> 00:19:41,110 >> الآن في هذه المرحلة، وأنا داس على ما يكفي 361 00:19:41,110 --> 00:19:44,210 أنني الآن أنا في نهاية برنامجي. 362 00:19:44,210 --> 00:19:46,980 إذا كنت خطوة على ذلك، وسوف فعلا وقف التنفيذ 363 00:19:46,980 --> 00:19:48,860 كما رأينا في الماضي. 364 00:19:48,860 --> 00:19:52,110 اسمحوا لي أن أعد هذا، مرة أخرى، لذلك أستطيع أن أشير شيء آخر خارج، 365 00:19:52,110 --> 00:19:53,320 كذلك. 366 00:19:53,320 --> 00:19:55,350 >> في هذه الحالة، فمن تطلب مني الآن، مرة أخرى، 367 00:19:55,350 --> 00:19:57,100 للرقم، الذي وأنا، مرة أخرى، أدخل. 368 00:19:57,100 --> 00:20:00,300 لكن هذه المرة، وأنا ذاهب للدخول في عدد أكبر بحيث لحلقة 369 00:20:00,300 --> 00:20:02,540 وأعاد أكثر من مرة. 370 00:20:02,540 --> 00:20:06,090 في هذه الحالة، وانا ذاهب لإدخال قيمة 11. 371 00:20:06,090 --> 00:20:08,390 >> الآن مرة أخرى لأنني تعيين نقطة فاصل في خط 15، 372 00:20:08,390 --> 00:20:10,490 انها تسير لتسليط الضوء على هذا الخط. 373 00:20:10,490 --> 00:20:12,980 يمكننا أن نرى أن لدينا عدد 11 غير صحيح 374 00:20:12,980 --> 00:20:15,560 ممثلة في المتغيرات المحلية الخاصة بنا. 375 00:20:15,560 --> 00:20:22,460 يخطو أكثر من ذلك، يمكننا الآن مشاهدة ما يحدث لقيمة لدينا من أنا 376 00:20:22,460 --> 00:20:25,680 كلما تقدمنا ​​داخل هذا للحلقة. 377 00:20:25,680 --> 00:20:31,960 يحصل يتزايد في كل مرة نحن تصل إلى أعلى من ذلك للحلقة. 378 00:20:31,960 --> 00:20:35,110 >> الآن واحدة من الأشياء التي قد من المفيد أن تفعل أثناء التنفيذ 379 00:20:35,110 --> 00:20:40,490 هذا البرنامج هو بالنسبة لي فعلا تغيير منتصف الطريق متغيرات لمعرفة 380 00:20:40,490 --> 00:20:42,450 ما يحدث لبرنامجي. 381 00:20:42,450 --> 00:20:46,540 في هذه الحالة، لا يسعني في الواقع انقر نقرا مزدوجا فوق القيمة. 382 00:20:46,540 --> 00:20:48,040 لاحظ أن يصبح حقل النص. 383 00:20:48,040 --> 00:20:50,280 >> الآن أستطيع أن أدخل مختلفة نقدر تماما 384 00:20:50,280 --> 00:20:55,700 لنرى كيف يتصرف برنامجي عندما قمت بتغيير هذا المتغير. 385 00:20:55,700 --> 00:20:59,560 الآن في هذه الحالة، متغير ويتضمن الآن قيمة 10. 386 00:20:59,560 --> 00:21:02,810 لكن البرنامج لا يزال توقفت في التنفيذ. 387 00:21:02,810 --> 00:21:07,610 عندما كنت خطوة على، أرى أن ط القيمة، التي دخلت الى 10، 388 00:21:07,610 --> 00:21:12,170 ليس أكبر من قيمة الأسطوانات، والذي يسبب فورا عن حلقة 389 00:21:12,170 --> 00:21:14,240 لوقف التنفيذ. 390 00:21:14,240 --> 00:21:16,210 >> الآن أن ليست فقط السبب تفضلتم 391 00:21:16,210 --> 00:21:19,450 تريد تعديل متغير في المكان. 392 00:21:19,450 --> 00:21:22,210 قد ترغب في الواقع في محاولة لتعديله بحيث 393 00:21:22,210 --> 00:21:24,590 أن تتمكن من الاستمرار تنفيذ حلقة 394 00:21:24,590 --> 00:21:27,370 أو حتى يمكنك تعديل بعض القيمة قبل أن 395 00:21:27,370 --> 00:21:32,630 تصل بعض مجموعة محددة من الحساب أن كنت على وشك القيام بها. 396 00:21:32,630 --> 00:21:36,210 >> حتى الآن أننا في الواقع تغيير قيمة ط كبرنامج تم تنفيذ، 397 00:21:36,210 --> 00:21:39,540 أنها تسببت في لحلقة لإنهاء قبل الأوان بسبب، فجأة، ط 398 00:21:39,540 --> 00:21:42,770 حدث أن يكون أكبر من القيمة من الأسطوانات، وهذا يعني أن هذا لحلقة 399 00:21:42,770 --> 00:21:45,410 لم تعد هناك حاجة ليتم تنفيذها. 400 00:21:45,410 --> 00:21:48,780 علاوة على ذلك، حدث ليكون القضية التي قمنا بتغيير قيمة ط 401 00:21:48,780 --> 00:21:53,270 عندما سلط الضوء على خط 17، الذي كان نقطة في الوقت المناسب 402 00:21:53,270 --> 00:21:56,280 أن لتنفيذ حلقة كان في الواقع يجري تقييمها. 403 00:21:56,280 --> 00:22:00,210 >> إذا كنت قد غيرت قيمة أنا على خط آخر، ويقول 19، 404 00:22:00,210 --> 00:22:03,360 لكنا رأينا مختلفة السلوك لأن الخط سيكون 19 405 00:22:03,360 --> 00:22:08,310 أعدمت قبل الحلقة تم إعادة تقييم الحالة. 406 00:22:08,310 --> 00:22:11,900 الآن في هذه المرحلة، وأنا، مرة أخرى، في نهاية هذا البرنامج. 407 00:22:11,900 --> 00:22:15,707 وأستطيع أن يسمح هذا للشروع السماح برنامجي لإنهاء بشكل طبيعي. 408 00:22:15,707 --> 00:22:18,290 ولكن هناك بضعة أشياء التي تعتبر مهمة ليسلب 409 00:22:18,290 --> 00:22:19,960 من هذه المناقشة معينة. 410 00:22:19,960 --> 00:22:22,490 تحتاج إلى تقييم الافتراضات الخاصة بك 411 00:22:22,490 --> 00:22:24,710 حول كيفية رمز يجب أن يتصرف. 412 00:22:24,710 --> 00:22:28,220 أي وقت كنت تعتقد أن بعض قطعة من التعليمات البرمجية تعلمون يحدث في العمل، 413 00:22:28,220 --> 00:22:30,940 قد يكون العلم الاحمر للذهاب ذهابا وتقييم، ومما لا شك فيه 414 00:22:30,940 --> 00:22:33,470 أن توليكم كيف يعمل هذا الرمز 415 00:22:33,470 --> 00:22:38,290 صحيح فعلا كيف هو وأعرب في التعليمات البرمجية المصدر. 416 00:22:38,290 --> 00:22:41,300 >> ولكن أكثر من ذلك لكان نقطة، عندما نقوم باستخدام المصحح، 417 00:22:41,300 --> 00:22:43,920 يمكنك وضع نقاط التوقف في خطوط مختلفة من التعليمات البرمجية، 418 00:22:43,920 --> 00:22:48,110 والذي يؤدي المصحح ل إيقاف التنفيذ في كل من تلك الخطوط 419 00:22:48,110 --> 00:22:52,210 بحيث يمكنك تقييم الذاكرة أو حتى تغير في مكانه. 420 00:22:52,210 --> 00:22:55,630 ومرة أخرى، وتذكر أنه يمكنك إنشاء نقاط التوقف متعددة حتى يتسنى لك 421 00:22:55,630 --> 00:23:00,390 ويمكن أيضا استئناف التنفيذ، والقفز على أجزاء كبيرة من التعليمات البرمجية، 422 00:23:00,390 --> 00:23:04,790 وانها سوف توقف تلقائيا في نقطة فاصل المقبلة. 423 00:23:04,790 --> 00:23:07,760 >> هناك في الواقع أكثر تقدما ملامح المصحح، كذلك. 424 00:23:07,760 --> 00:23:10,170 ولكن علينا أن يحولك لبعض أشرطة الفيديو لاحقا 425 00:23:10,170 --> 00:23:14,090 من أجل ندف حقا بغض النظر كيف لاستخدام هذه ظائف معينة. 426 00:23:14,090 --> 00:23:15,990 في الوقت الراهن، شكرا لك كثيرا لمشاهدة. 427 00:23:15,990 --> 00:23:18,080 وحسن الحظ التصحيح.