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 طور مستقیم در داخل از حلقه for 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 در این مورد، یکی که ما استفاده از دیباگر گنو است، و یا 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 statement اجرا میشود. 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 ما اینجا می توانید ببینید که ما یک متغیر نام NUM، دارای یک مقدار پیش فرض 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 پرس و جو از کاربران که از نوع int است که ما می خواهیم برای استفاده در برنامه های ما. 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 من یک عدد صحیح به نام NUM است که یک مقدار 5. 334 00:18:11,610 --> 00:18:15,090 و من قصد دارم به انجام می شود برخی از ریاضی در این تعداد است. 335 00:18:15,090 --> 00:18:20,130 >> اگر من بیش از آن که گام به گام، ما می توانیم توجه کنید که ارزش برای NUM 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 است که به در که حلقه for استفاده می شود. 341 00:18:35,370 --> 00:18:38,230 >> حالا قبل از اینکه به یاد داشته باشید که من به ذکر است که گاهی اوقات شما 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 و شما می توانید پیدا کردن آنچه در واقع اتفاق می افتد در داخل حلقه for را 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 اما این بار، من قصد دارم را وارد کنید در یک عدد بزرگ تر به طوری که حلقه for 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 است بزرگتر از ارزش NUM، که بلافاصله باعث می شود که برای حلقه 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 آن را ناشی از حلقه for به ترک قبل از موعد مقرر به دلیل، همه ناگهانی، من 398 00:21:39,540 --> 00:21:42,770 رخ داده است به بیشتر از مقدار از NUM، به این معنی که برای حلقه 399 00:21:42,770 --> 00:21:45,410 دیگر مورد نیاز است اعدام شود. 400 00:21:45,410 --> 00:21:48,780 علاوه بر این، رخ داده است به مورد است که ما ارزش i تغییر 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 و اشکال زدایی موفق باشید.