[؟ DAN ARMADARAS:؟] سلام، من [هستم؟ دن Armadaras؟]. امروز، ما در حال رفتن به در اشکال زدایی دنبال. نه تنها ما را به رفتن صحبت در مورد برخی از تکنیک های، بلکه ما در حال رفتن به در نگاه کنید برخی از ویژگی های موجود در IDE CS50 که اجازه می دهد شما به راحتی یک برنامه اشکال زدایی. تنها یک نمونه از چیزی است که می تواند به اشتباه و این در واقع چیزی که ما در حال حاضر قبل از دیده می شود. در این مورد، این یک برنامه C است که یک عدد صحیح می پذیرد از کاربر، تقسیم آن به دو، فراهم می کند و خروجی به کاربر. از آنچه که ما را دیده ام پیش از آن در سخنرانی ها، ما می دانیم که این در واقع باعث می شود انواع خاصی از مشکلات بخش هنگامی که ما اعداد فرد. به طور خاص، ما فقط دور انداختن هر چیزی بعد از نقطه اعشار. در حال حاضر، ما می دانیم که این اتفاق می افتد به این پرونده است. و اگر ما آن را اجرا کنید، ما می توانیم تایید سوء ظن ما، برای اولین بار، با گردآوری. و پس از آن، در حال اجرا و ورود یک عدد فرد. این چیز جدیدی نیست. اما این است که در واقع نمونه ای از یک اشکال است که می توانید در یک برنامه بزرگتر وجود داشته باشد که سخت تر می شود برای پیگیری کردن. حتی اگر ما می دانیم چه مسئله است، معما واقعی از ماده ممکن است در تلاش برای شناسایی به طور خاص که در آن خطا رخ می دهد، شناسایی این مشکل است، و سپس اصلاح آن. بنابراین این به عنوان مثال ارائه از آنچه ممکن است چیزی که ما در حال حاضر می دانم، اما می توان به خاک سپرده شد در عناصر دیگر از کد. بنابراین باز کردن این منبع دیگر فایل کد به عنوان مثال، این مشکل در حال حاضر بخش بخشی از یک برنامه بزرگتر است. هنوز هم ممکن است کمی کمی ساختگی، و ما ممکن است به راحتی قادر به شناسایی آن، به ویژه از آنجایی که ما فقط بحث در این مورد. اما ما می توانیم کشف کردن که این مشکل می تواند در مقیاس بزرگتر وجود داشته باشد. اگر من این تدوین و در حال حاضر آن را اجرا کنید، وارد کنید یک عدد فرد، ما می توانید ببینید که ما دقیقا نمی خروجی که ما ممکن است انتظار می رود. در این مورد خاص، ما ممکن است می گویند که ما می خواهید برای شمارش تمام اعداد از یک تا چند شماره های خاص. و ما می توانیم که ما می بینیم یک تنوع از مسائل در اینجا اگر ما در حال خروجی، به سادگی، 0 و 1 هنگامی که ما ارائه یک ورودی از 5. بنابراین ما در حال حاضر که یک مشکل وجود دارد در اینجا. اما ما ممکن است دقیقا می دانید که در آن این موضوع در واقع وجود دارد. در حال حاضر یکی از راه هایی که ما می توانید سعی کنید برای حل این مشکل چیزی است که ما این است در حال حاضر به معرفی شده است. ما فقط می توانید آن را در مقیاس بزرگتر استفاده کنید. در خط 14، ما باید این تابع printf، که اجازه می دهد تا ما را برای چاپ کردن دولت از تکه های مختلف از اطلاعات است. و این چیزی است که شما باید در برنامه خود استفاده به تلاش برای کشف کردن دقیقا همان چیزی است اتفاق می افتد در خطوط مختلف از کد. بنابراین حتی اگر این نیست خروجی نهایی که ما در واقع می خواهید برای تولید از این برنامه، ما هنوز هم ممکن است برخی از اشکال زدایی دارند اظهارات که در آن ما می توانید سعی کنید به کشف کردن دقیقا همان چیزی در داخل کد ما اتفاق می افتد. بنابراین در این مورد، من تابع () printf با برچسب اشکال زدایی. در این مورد، این است تنها یک رشته اشکال زدایی که من تا قرار دادن طوری که آن را می شود من در خروجی از کد من بسیار روشن آنچه در آن است که من می خواهم برای نشان دادن. و خروجی در اینجا تعداد که ما محاسبه کرده اند. در این مورد، من ممکن است می خواهم به دقیقا می دانید آنچه اتفاق می افتد قبل و بعد از محاسبات خاص. بنابراین من ممکن است یک تابع () printf قبل از استفاده و پس از آن خط از کد. در این مورد، من حتی می تواند آن را روشن کمی بیشتر با گفتن اشکال زدایی قبل از و اشکال زدایی پس از تا که من خود را با اشتباه نیست چند خط که نگاه یکسان است. حال اگر ما این را دوباره کامپایل و اجرا آن، باز هم مانند پنج یک شماره وارد کنید ما می توانید ببینید که ما اکنون خروجی قبل و بعد از و پیدا کردن که ما انجام می شود روشن تقسیم و یا روشن داشتن از تعداد که ما در واقع خواهید انجام دهید. در حال حاضر در این مورد، این است واقعا یک خروجی روشن است. این واقعا یک نتیجه روشن نیست که ما از این برنامه خاص می خواهید. و این است که، دوباره، کمی ساختگی. اما، شاید، یکی از چیزهایی که در صورتی که مشخصات گفت ما می تواند انجام که ما می خواهیم به تقسیم این 2 و اضافه کردن 1-- بنابراین به عبارت دیگر، ما می خواهیم به دور up-- پس از آن ما ممکن است مطمئن شوید که ما می توانیم که چیزی خاص، در این مورد. حالا در اینجا ما می دانیم که ما خواهد بود قادر به اضافه کردن 1 به تعداد نصف ما است. بیایید این کامپایل مجدد و تایید می کنند که این رفتار راه است که ما می خواهید. ما در حال حاضر می توانید ببینید که قبل از داشتن، ما باید تعداد 5. پس از، ما باید شماره 3، که با توجه به مشخصات ما، چیزی است که ما می خواستیم به انجام. اما اگر ما در نگاه خروجی در اینجا، ما می توانیم دید که ما ممکن است یکی دیگر از اشکال در دسترس نباشد، که که ما در حال شروع شمارش ما را از 0. در حال حاضر دوباره، این چیزی است که ما در گذشته دیده می شود و ما می توانیم کاملا به آسانی حل کنند. اما در این مورد، ما نیز تا به حال به نفع استفاده از دستور () printf طور مستقیم در داخل از حلقه for بدانید که دقیقا در آن که خطا رخ داده است. اظهارات بنابراین تابع () printf هستند در کمک بسیار مفید شما تعیین که در آن، دقیقا در کد منبع خود را، یک خطای خاص اتفاق می افتد است. و آن را نیز مهم است که متوجه که، به عنوان ما در حال نوشتن کد، ما ممکن است مفروض در مورد دولت از یک برنامه است. یا ممکن است مفروض در مورد چه بخشی از برنامه است که در واقع درست یا نادرست هنگام بعد که ما در آن برنامه ساخت و آن را بخشی از یک را پیچیده و برنامه بزرگتر که ما متوجه است که برخی از جنبه از است که در واقع حشره دار. با استفاده از printf واقعا می تواند کمک محدود کردن و شناسایی مناطق از یک برنامه است که ممکن است است رفتار دقیقا راه است که ما انتظار می رود، بر اساس مفروضات ما است. اما ابزار دیگر وجود دارد در دسترس، و همچنین، که به ما اجازه سعی کنید به شکل که در آن یک خطا بوجود آمده است و همچنین، به طور خاص، چه چیز در داخل این برنامه اتفاق می افتد. بنابراین با استفاده از تابع () printf است بسیار وقتی ما می خواهیم مفید برای شناسایی مناطق خاصی از برنامه ای است که برخی از اشکال. اما آن را نیز می شود خسته کننده بعد از مدتی. در این مورد، این است که یک برنامه نسبتا ساده تنها با یک یا دو متغیر. و آن را بسیار آسان را برای ما به نسخه قابل چاپ کردن ارزش آن متغیرها در زمینه برنامه بزرگتر است. اما ما ممکن است یک متفاوتی داشته باشند برنامه ای است که دارای بسیاری از متغیرها. و آن را نمی ممکن است کاملا شود بسیار آسان برای استفاده از printf سعی کنید به ارزیابی آنچه اتفاق می افتد به هر یک از این متغیرها عنوان برنامه در حال اجرا است. یک برنامه وجود دارد، نام برنامه دیباگر. در این مورد، یکی که ما استفاده از دیباگر گنو است، و یا GDB، که به ما اجازه بازرسی داخلی کار یک برنامه در یک بسیار بیشتر راه دقیق. ما در واقع می تواند اجرا GDB از خط فرمان در اینجا به سادگی با تایپ GDB و فرمان است که ما می خواهیم به اشکال زدایی. در این مورد، به حساب. در حال حاضر در این مورد، ما می توانید ببینید که ما را به یک اعلان که می گوید GDB. و ما در واقع می توانید اجرای دستورات به GDB در واقع شروع به اجرا از برنامه، آن را متوقف کند در نقاط خاصی، ارزیابی متغیرها و بازرسی متغیر است که در حالت برنامه وجود داشته باشد در آن لحظه خاص، و به همین ترتیب، و غیره. این برنامه یک مقدار زیادی از قدرت به ما. اما آن را خیلی اتفاق می افتد که IDE CS50 نیز یک رابط کاربری گرافیکی و یا یک کاربر فراهم می کند رابط کاربری برای GDB که اجازه می دهد تا ما را به انجام این کار بدون نیاز رابط خط فرمان آنچه و یا در همه حتی. راه که من می توانم دسترسی به است با استفاده از دکمه اشکال زدایی در بالا بسیار از IDE CS50 است. در حال حاضر در گذشته، آنچه که ما دیده این است که ما با استفاده از دستور خط به کامپایل و سپس اجرای برنامه است. دکمه اشکال زدایی می کند هر دو از این مرحله است. اما آن را نیز خواهد آورد تا تب دیباگر در سمت راست که به ما اجازه بازرسی انواع خواص از برنامه آن را به عنوان اجرا است. اگر من اشکال زدایی کلیک کنید، در این مورد، آن را خواهد آورد تا یک تب جدید در کنسول پنجره در پایین بسیار. و شما می توانید ببینید که این برگه دارای برخی از اطلاعات در بالا بسیار. و ما تا حد زیادی می تواند این را نادیده گرفت. اما یکی از چیزهایی که ما می خواهیم به اطلاع این است که آن خروجی همان چیزی است که ما خواهد اگر ما سعی به اجرا را بر روی برنامه C در پنجره ترمینال. در اینجا، ما می توانید ببینید که آن اجرا صدای جرنگ جرنگ، و آن را تا انواع پرچم، و آن را تدوین فایل count.c ما، که برگه انتخاب در آن زمان بود که من ضربه اشکال زدایی. پس این است که بسیار مفید است زیرا اکنون با استفاده از این دکمه اشکال زدایی، ما به طور همزمان می توانید کامپایل و سپس اجرای برنامه که ما در واقع می خواهید برای اجرای. یکی از پرچم ها است که مهم است، در این مورد، ما در واقع با استفاده از برای طولانی ترین زمان بلکه فقط برخی از دست تکان دادن [نامفهوم]، که این حق در اینجا است. در صدای جرنگ جرنگ، آن را می گوید -ggdb3. در این مورد، آنچه که ما می گفتن صدای جرنگ جرنگ، کامپایلر ما، این است که ما می خواهیم به کامپایل برنامه های ما. اما همچنین ارائه چه هستند نام اطلاعات نماد به طوری که کامپایلر در واقع دارای دسترسی به بسیاری از اطلاعات اساسی در موجود در برنامه است. بیشتر به طور خاص، تعداد از توابع است که من، نام کسانی توابع، متغیرها، انواع که آن متغیر هستند، و انواع از چیزهای دیگر که کمک دیباگر انجام عملیات آن است. در حال حاضر چیز دیگری وجود ندارد مهم است که به ذکر وقتی ما در حال بحث در حال اجرا یک برنامه در این راه. توجه داشته باشید که این در واقع یک تب جدید به ارمغان آورد تا در کنسول ما در پایین. ما دیگر به تعامل به طور مستقیم با پنجره ترمینال. اما این تب جدید است در واقع یک پنجره ترمینال. این فقط خاص به در حال اجرا است برنامه که ما ایجاد کرده اند. توجه داشته باشید که در پایین، در ترکیب با برخی از خروجی توسط صدای جرنگ جرنگ کامپایلر و GDB، که ما تا حد زیادی می تواند نادیده بگیرد، آن را در واقع خروجی را نشان می دهد برنامه های ما در پایین. در حال حاضر آن مهم است که متوجه که این یک پنجره در واقع شما را نشان می دهد خروجی از برنامه های خود را اما همچنین می تواند ورودی قبول برای آن برنامه، و همچنین. بنابراین توجه داشته باشید که می گوید لطفا یک شماره را وارد کنید، که همان خروجی است که ما تا به حال است در پنجره ترمینال قبل بود. اما در حال حاضر در این برگه جدید نشان داده شده. من می توانید ورودی یک عدد است. و این در واقع خواهد شد تابع به عنوان انتظار می رود به ما نشان اشکال زدایی ما، خروجی، خروجی که ممکن است حشره دار، همانطور که پیش از دیده می شود. و در بسیار پایین، آن را در واقع تا به برخی از خروجی اضافی از تولید ناخالص داخلی فقط گفت که این برنامه به اتمام رسانده است. در حال حاضر به عنوان شما را در این دیدم اجرا به ویژه از طریق، آن بود به خصوص نه مفید است زیرا حتی هر چند که ما حال منوی دیباگر آمده تا، این هنوز هم یک برنامه در حال اجرا بود. در هیچ نقطه ای آن را در واقع توقف اعدام برای ما قادر به بازرسی تمام از متغیرهای موجود در. یه چیز دیگه هم که ما به انجام به منظور به GDB به رسمیت شناختن که ما می خواهیم به توقف اعدام از برنامه و نه فقط اجازه می دهد آن را به ادامه به طور معمول که ما را در هر صورت دیگر. به منظور توقف اعدام، در برخی از خط خاص، ما نیاز به ایجاد چه به نام نقطه شکست. و نقطه شکست است که به راحتی ایجاد در این CS50 IDE با در نظر گرفتن موس خود را و کلیک کردن به طور مستقیم به سمت چپ برخی از تعداد خط خاص. هنگامی که من انجام این کار، یک نقطه قرمز به نظر می رسد، که نشان می دهد که این خط در حال حاضر یک نقطه شکست. و در زمان بعدی که من اجرا GDB آن، اعدام در آن نقطه متوقف استراحت وقتی می رسد که خط از کد. در حال حاضر این است که مهم چیزی که باید درک که آن را نه لزوما مورد که هر خط از کد است که در واقع در دسترس است. اگر من به یک تابع تا اینجا، برای f-- از درجه اعتبار ساقط example-- و فقط یک خط چاپ here-- سلام world-- اگر من هرگز این تابع، آن خواهد بود که مورد که، اگر من یک نقطه شکست مجموعه اینجا، تابع هرگز نامیده خواهد شد. و بنابراین، این نقطه سر به ویژه در واقع هرگز مکث خواهد شد اجرای برنامه. بنابراین اجازه دهید بگویم که من به درستی ایجاد نقطه شکست در برخی از خط از کد که در واقع اجرا خواهد شد. در حال حاضر در این مورد، این است که خط اول در تابع اصلی. پس از آن قطعا مورد خواهد بود که، به محض من شروع اعدام، خط اول رسیده خواهد شد. GDB خواهد اعدام تامل است. و پس از آن، من قادر خواهد بود تا با دیباگر تداخل می کنند. شما می توانید چند خط به عنوان مجموعه ای نقاط شکست، اگر شما می خواهم. ما همچنین می توانیم یک خط ایجاد کنید تا در اینجا در این بخش از کد که هرگز خواهد شد. و ما نیز می توانید مجموعه ای از یک بیشتر است. به این دلیل که ما را می خواهم به این که ما این کار را انجام رفتن به کمی بیشتر جزئیات را در یک لحظه. بنابراین در حال حاضر، اجازه دهید غیر فعال کردن این نقطه شکسته اضافی به طوری که ما می توانیم در نگاه چه اتفاقی می افتد زمانی که من یک شکست واحد نقطه در برنامه من است. من را ساخته اند برخی تغییرات در این برنامه است. بنابراین من نیاز به آن را ذخیره کنید. من اشکال زدایی کلیک کنید به طوری که من می توانم آغاز تدوین و پس از آن اعدام دیباگر. خواهیم دید که پس از لحظه، خط که ما به عنوان استراحت انتخاب نقطه به رنگ زرد برجسته. ما همچنین می توانیم متوجه است که در راست بالا، در پانل اشکال زدایی که نماد مکث تبدیل شده است به یک آیکون بازی کمی. این به این معنی است که ما باید مکث اعدام، در این مورد خاص است. و زدن دکمه پخش خواهد به ما اجازه اجرای برنامه را ادامه در آن نقطه خاص. توجه داشته باشید که یک زن و شوهر از دیگر وجود دارد دکمه های موجود در این پانل اشکال زدایی، به خوبی. مرحله بیش از، که به من اجازه می دهد تا به اجرای این یک خط کد و گام به گام به آن خط به یک بعدی، که در این مورد، بدان معنی است که تابع () printf statement اجرا میشود. و پس از آن مکث خواهد شد اعدام در خط 13، مانند. و نیز وجود دارد یک گام به تابع، که مفید است اگر من دیگر ایجاد کرده اند توابع در جای دیگر در کد منبع. و من می خواهم به قدم به آن دسته از توابع به جای اجرای آن تابع به عنوان یک کل. اما ما بیشتر نگاه کنید در مرحله به یک تابع در یک لحظه. در حال حاضر متوجه برخی از چیزهای دیگر که در واقع در درون این پنل اشکال زدایی وجود داشته باشد. در حال حاضر این پنل به نام پشته پاسخ، که به ما نشان می دهد که در آن دقیقا ما می باشد. در این مورد، ما در داخل از تابع اصلی. اسکریپت ما این است به نام count.c. و ما اتفاق می افتد به می باشد خط 13، ستون یک، که دقیقا چیزی است که منطقه برجسته از کد منبع را نشان می دهد، و همچنین. حالا توجه کنید که این نیز نشان می دهد در زیر بخش متغیر محلی تمام متغیرهای که در این تابع وجود داشته باشد. این مهم است که توجه داشته باشید که تمام متغیرهای در این متغیر محلی ظاهر خواهد شد بخش درون یک تابع، حتی قبل از آنها تعریف می شوند. ما اینجا می توانید ببینید که ما یک متغیر نام NUM، دارای یک مقدار پیش فرض 0، و آن را از نوع int است. حالا قبل از اینکه ما در واقع مقداردهی اولیه همه این متغیرها، ما لزوما نیست تضمین برای دیدن یک مقدار 0. و بسته به اعدام دیگر که شما انجام داده اند و دولت از حافظه خود را هنگامی که شما در واقع این برنامه را اجرا، شما ممکن است که شما ارزش ها 0 مشاهده نمی و، به جای، برخی از شماره های دیگر دیوانه. اما در مورد آن نگران نباشید. این نمی شود مربوطه تا شما در واقع مقداردهی اولیه مقدار است. در حال حاضر در این مورد، ما می توانید ببینید که من برخی از خروجی انجام شده است. و من، در حال حاضر، اعدام متوقف شد. اما در این مورد، چه من واقعا می خواهم به انجام است به حال بیش از این خط گام به گام از کد به طوری که من در واقع می توانید پرس و جو از کاربران که از نوع int است که ما می خواهیم برای استفاده در برنامه های ما. در حال حاضر در این مورد، زمانی من ضربه مرحله بیش از، اطلاع که مکث و یا به جای رزومه را فشار دهید تا این دکمه مکث تغییر کرده است چرا که این کد در واقع اجرای. آنچه اتفاق می افتد در حال حاضر این است که انتظار برای ما به ورودی برخی از اطلاعات به عنوان ما می توانید متن خروجی ما را ببینید در پایین. بنابراین در حال حاضر، این است در واقع متوقف نمی شود، حتی اگر آن، نوع، به نظر می رسد به دلیل چیزی که اتفاق می افتد. اما آن را فقط اتفاق می افتد که در مورد خاص من در خط 13، من منتظر ورودی کاربر من. و به این ترتیب GDB است قادر به بازرسی نیست یک برنامه به عنوان آن در حال اجرا است. در حال حاضر زمان بعدی که من وارد برخی از input-- بنابراین من که شماره 5 را وارد کنید، همانطور که ما در دیده ام past-- بازگشت ضربه، و ما توجه کنید که، بلافاصله، مکث GDB و، دوباره، برجسته خط بعدی. اما توجه کنید که در حال حاضر، به عنوان یک نتیجه از ورود ما یک ارزش، ما که ارزش در داخل به روز متغیرهای محلی ما، که بسیار مفید به دقت می دانم این است چه این تعداد در حافظه بود. حالا من می تواند اجازه می دهد این برنامه به ادامه بازی تا پایان اجرای آن توسط هدف قرار دادن رزومه. ما می تواند به سرعت دید که می کند پایان برنامه اجرا با خروجی همان است که ما قبل از حال، دیباگر بسته می شود، و در حال حاضر این برنامه به طور کامل متوقف شده است. من نشان می دهد که تنها برای اهداف از دیدن آنچه اتفاق می افتد زمانی که ما در واقع ضربه رزومه. اما ما در واقع در حال رفتن به می خواهید برای رفتن به این برنامه به طوری که ما می تواند به اشکال زدایی سعی کنید دقیقا همان چیزی اتفاق می افتد. حالا که من با استفاده از دیباگر، من ممکن است این اظهارات تابع () printf اشکال زدایی نیاز ندارد. بنابراین من می تواند آنها را حذف کنید که من انجام خواهد در حال حاضر فقط برای رفتن به کد ساده تر ما که ما تا به حال یک لحظه پیش. حالا وقتی که من را نجات دهد برنامه ریزی و اجرای آن، آن را، دوباره، که به اولیه نقطه ای که من در خط 11 بود را بشکند. و من قادر به بازرسی متغیرهای من به عنوان من خواهید انجام دهید. این فقط اتفاق می افتد که این بخش بسیار جالب است، و من می دانم که من قصد دارم برای چاپ کردن این بیانیه است. لطفا شماره را وارد کنید. و پس از آن، من می دانم که من قصد دارم به درخواست کاربر برای عدد صحیح است. بنابراین شاید، من در واقع می خواهید به حرکت من نقطه سر کمی بیشتر پایین. شما می توانید نقطه شکسته حذف با کلیک کردن، دوباره، به طور مستقیم به سمت چپ از این تعداد خط. که نقطه قرمز رنگ را ناپدید می شوند، نشان می دهد که نقطه شکست در حال حاضر رفته. در حال حاضر در این مورد، اعدام موقتا متوقف شده است. و پس از آن که در واقع رفتن به سر در این مثال خاص است. اما من می توانید یک استراحت تنظیم اشاره کمی بعد. و هنگامی که من در حال حاضر از سر من کد، آن را از سر خواهد گرفت و به نقطه که نقطه شکست. باز هم، من ضربه رزومه. آیا مانند هر چیز اتفاق می افتد نظر نمی رسد. اما این دلیل من کد است که در انتظار ورودی. من یک عدد 5 را وارد کنید، ضربه را وارد کنید، و در حال حاضر نقطه شکست بعدی ضربه خواهد شد. در حال حاضر در این مورد، این خط از کد است که، قبل از، ما می دانستیم رخ داده است به حشره دار. بنابراین ارزیابی چه اتفاقی می افتد اجازه در این نقطه خاص در زمان. هنگامی که یک خط هایلایت شده است، این خط هنوز اجرا نشده است. بنابراین در این مورد، ما می توانید ببینید که من یک شماره، که من یک عدد صحیح به نام NUM است که یک مقدار 5. و من قصد دارم به انجام می شود برخی از ریاضی در این تعداد است. اگر من بیش از آن که گام به گام، ما می توانیم توجه کنید که ارزش برای NUM با توجه به تغییر کرده است حساب که ما در واقع انجام داده ام. و در حال حاضر که ما در داخل این حلقه و یا در حال حاضر که برای حلقه خود را هایلایت شده است، ما می بینیم که ما یک جدید متغیر به نام من که است که به در که حلقه for استفاده می شود. حالا قبل از اینکه به یاد داشته باشید که من به ذکر است که گاهی اوقات شما رفتن به نوعی از دیوانه شماره به عنوان پیش فرض قبل از آن تعداد و یا آن متغیر است در واقع مقدار دهی اولیه. ما می توانیم دقیقا دید که در اینجا در این متغیر به نام من، که نه هنوز دهی شده است در زمان برجسته. اما ما می توانید ببینید که آن را تا برخی از تعداد که ما در واقع انتظار می رود. این خوب است. آیا در مورد آن نگران نباشید چرا که ما در واقع مقداردهی اولیه که تعداد تا زمانی که من مرحله بیش از این خط و ارزش من شده است به ارزش 1 مقداردهی اولیه. بنابراین به دید که که در واقع مورد، اجازه دهید مرحله بیش از. ما در حال حاضر می توانید ببینید که که خط اجرا شده است. و ما در حال حاضر برجسته این خط printf است. و ما هم اکنون می توانید ببینید که چگونه ارزش های ما از من و 3 در طول زمان تغییر. این بسیار مفید است که برای انجام، در واقع، است به مرحله در طول خطوط بارها و بارها. و شما می توانید پیدا کردن آنچه در واقع اتفاق می افتد در داخل حلقه for را و چه اتفاقی می افتد به متغیرهای داخل که برای حلقه که اجرای برنامه رخ می دهد یک گام در یک زمان. در حال حاضر در این نقطه، من بیش از فقط به اندازه کافی پا که من در حال حاضر در پایان برنامه من است. اگر من بیش از آن که گام به گام، از آن خواهد شد در واقع اعدام را متوقف همانطور که ما در گذشته دیده می شود. اجازه بدهید من این راه اندازی مجدد، اما دوباره، به طوری که که من می توانم چیز دیگری اشاره می کنند، به خوبی. در این مورد، آن است که اکنون من می پرسی، دوباره، برای یک عدد، که من، دوباره، را وارد کنید. اما این بار، من قصد دارم را وارد کنید در یک عدد بزرگ تر به طوری که حلقه for خواهد برابر بیشتر تکرار. در این مورد، من قصد دارم را وارد کنید یک ارزش 11. در حال حاضر دوباره چون من می خواهم مجموعه نقطه شکست در خط 15، آن را به برجسته که خط. ما می توانید ببینید که ما شماره 11 است به درستی ارائه شده در متغیرهای محلی ما است. پله بر آن، ما هم اکنون می توانید تماشای چه اتفاقی می افتد به ارزش های ما از من همانطور که ما در داخل این اقدام برای حلقه. این می شود یک واحد اضافه هر زمان که ما رسیدن به بالا از آن برای حلقه. در حال حاضر یکی از چیزهایی که ممکن است در طول اجرای برنامه را به انجام مفید باشد این برنامه این است برای من به واقع تغییر وسط متغیر برای دیدن چه اتفاقی می افتد به برنامه من است. در این مورد، من در واقع می توانید دو برابر ارزش را کلیک کنید. توجه داشته باشید که آن را به یک فیلد متنی است. در حال حاضر من می توانید وارد کنید مختلف ارزش در دسترس نباشد تا ببینید که چگونه برنامه من رفتار وقتی که من آن متغیر را تغییر دادهاید. در حال حاضر در این مورد، متغیر من در حال حاضر شامل ارزش 10. اما این برنامه هنوز مکث در اعدام. وقتی که من مرحله بیش از، من می بینم که ارزش من، که من به عنوان 10 وارد شده، است بزرگتر از ارزش NUM، که بلافاصله باعث می شود که برای حلقه برای جلوگیری از اجرای. حالا که نه تنها به همین دلیل شما را می خواهید به تغییر متغیر در محل. شما در واقع ممکن است بخواهید سعی کنید آن را تغییر دهید به طوری که شما می توانید اجرای یک حلقه و یا به طوری که شما می توانید تغییر دهید برخی از ارزش قبل از آن برخی از مجموعه ای خاص از حساب رسد که شما در مورد به انجام می باشد. بنابراین در حال حاضر که ما در واقع تغییر ارزش من به عنوان برنامه در حال اجرا بود، آن را ناشی از حلقه for به ترک قبل از موعد مقرر به دلیل، همه ناگهانی، من رخ داده است به بیشتر از مقدار از NUM، به این معنی که برای حلقه دیگر مورد نیاز است اعدام شود. علاوه بر این، رخ داده است به مورد است که ما ارزش i تغییر هنگامی که خط 17 برجسته شد، که نقطه در زمان بود که برای اجرای حلقه در واقع در حال بررسی قرار گرفت. اگر من ارزش تغییر کرده بود من در یک خط های مختلف، می گویند 19، ما متفاوت را دیده اند رفتار به دلیل خط 19 را قبل از حلقه اجرا شرایط مجددا شد. در حال حاضر در این نقطه، من، دوباره، در پایان این برنامه است. و من می توانم این اجازه به ادامه به اجازه می دهد برنامه های من برای ترک به طور طبیعی. اما یک زن و شوهر از چیزها وجود دارد که مهم را به دور هستند از این بحث خاص است. شما نیاز به ارزیابی مفروضات خود را در مورد چگونگی کد باید رفتار شود. هر زمان که شما فکر می کنم که برخی از قطعه کد شما می دانید اتفاق می افتد به کار، که ممکن است یک پرچم قرمز به تماس و ارزیابی، و مطمئن شوید این فرض خود را از چگونه است که کد است عامل است که در واقع به چگونه آن را درست بیان شده در کد منبع خود را. اما حتی بیشتر به نقطه بود، زمانی که ما با استفاده از دیباگر، شما می توانید نقاط شکست در قرار خطوط مختلف از کد، که باعث می شود به دیباگر توقف اعدام در هر یک از این خطوط به طوری که شما می توانید ارزیابی حافظه و یا حتی آن را در محل را تغییر دهید. و دوباره، به یاد داشته باشید که شما می توانید ایجاد نقاط شکست های متعدد به طوری که شما همچنین می توانید از سر اعدام، جست و خیز بیش از بخش های بزرگی از کد، و آن را به طور خودکار مکث در نقطه شکست بعدی. در واقع پیشرفته تر وجود دارد ویژگی های دیباگر، و همچنین. اما ما باید به شما مراجعه کنید به برخی از فیلم ها پس از آن به منظور واقعا کسی را دست انداختن از هم جدا چگونه برای استفاده از آن توابع خاص است. در حال حاضر، با تشکر از شما بسیار برای تماشای. و اشکال زدایی موفق باشید.