تا اینجا یاد گرفتیم یه برنامه رو توی ویژوال استادیو بسازیم. ( آموزش قبلی )
حالا میخوایم به یکی از سخت ترین جنبه های برنامه نویسی بپردازیم. . . . 

باگ  😱😱😱😱😱😱

باگ ها معمولا برای همه پیش میان و وقت و انرژی زیادی پیدا کردن و رفع کردنشون میگیره
یکی از بهترین راه ها برای پیدا کردن باگ ، خروجی گرفتن از برنامه ست. 
قبل از if ، داخل if ، بعد از if و .... همه جا خروجی بگیرید از برنامه تا مطمئن بشید که داره درست کار میکنه. اما به مشکلی که هست اینجا اینه که صفحه console 300 خط تقریبا بیشتر حافظه نداره و پر میشه. ضمنان شما گاهی اوقات به مشکلاتی می خورید از قبیل هنگ کردن برنامه . شاید هم شما دارید یه سرایند می سازید؛ خب در این صورت شما نمی تونید اصلا برنامه رو اجرا کنید تا خروجی بگیرید.

یه راه خیلی خوب، استفاده کردن از break point هاست. دایره های قرمز دوست داشتنی ای که به ما در رفع باگ کمک میکنن.break point خیلی خیلی ساده عمل میکنه. 


پشت یک خط از کدتون کلیک کنید. تمام شد. شما اولین break point رو ایجاد کردید.


حالا به چه دردی میخوره خب ؟؟؟ برنامه رو اجرا کنید. 
کد تا قبل از break point اجرا میشه . وقتی به break point میرسه ، کد متوقف میشه و برنامه visual studio جلو میاد ( با ظاهری یکم متفاوت ) و شما میتونید کدتون رو ببینید.

خب. حالا موس رو روی یک متغیر ببرید و نگه دارید. . . 
مقدار متغیر نمایش داده میشه. درست زیر موس شما. شما توی برنامتون می‌بینید این مقدار غلطه ؟؟؟ مثلا باید اون رو عوض می‌کردید و یادتون رفته؟ خب. روی مقدار بیاید و کلیک کنید و مقدار درست رو وارد کنید. شما می‌تونید به همین سادگی یه متغیر رو عوض کنید. با این کار با پیدا کردن یک باگ ، میتونید بازم به دیباگ کردن ادامه بدید و لازم نیست از اول این کارا رو بکنید.

این بخش رو بقیه IDL ها هم دارن . حالا یکم متفاوت تر. اما یه تیکه از این break point که خیلی خیلی کمک می‌کنه ، مرور کردن راحت آبجکت ها و استراکچر ها و یا تمام خونه های آرایه ست. اگه روی یکی از این نوع ها ( که داخلش چند متغیر دیگه هست ) موس رو نگه دارید ، یه صفحه بزرگ تر باز میشه و شما هم زمان می‌تونید تمام خونه های آرایه ، بردار ، ساختار و یا کلاس خودتون رو چک کنید. این به شما کمک می‌کنه تا هر بار یه ماتریس گنده رو نمایش ندید . 

بعد از این که break point مقدار ها رو نشون داد و چک کردیدشون ، برای ادامه دادن کار ، دکمه continue رو می‌زنید. اگرم نیاز به متوقف کردن داشتید ( خواستید کد رو عوض کنید ) میتونید اون مربع قرمز رنگ رو بزنید.
شما می‌تونید break pointی که دیگه نیازش ندارید رو هم با کلیک کردن روش بردارید. 
حالا اگرم نخواستید کلا حذفش کنید ، می‌تونید موس رو ببرید روش و راست کلیک کنید و disable break point رو بزنید. یا نشان گر موس رو بیارید روی همون خط و ctrl + f9 رو بزنید. 

حالا میخوایم یکم وارد تنظیماتش بشیم. 

وقتی روی break point راست کلیک می‌کنید ، می‌تونید دو تا گزینه اساسی رو ببینید:
  1. conditions : شرط ها 
  2. actions : رفتار ها
فرض کنید که دارید برنامه اعداد فیبوناچی رو می‌نویسید و به باگ خوردید . خب. یه break point و شروع میکنید به چک کردن. شما می‌دونید که تا مثلا i == 100 برنامتون درست کار میکنه. خب . نمی خواید تا اونجا هر بار break point اجرا بشه. خیلی راحت توی شرط های break point اینو میتونید بگید. break point حالت های زیر رو برای شرط هاش داره: 
  • conditional expression : یه عبارت شرطی رو می‌گیره . یه جمله . دقیقا به همون فرمی که توی if وارد می‌کنید. حالا اگه is true رو انتخاب کرده باشید. فقط وقتی این شرط برقرار باشه ( مثلا : i < 100 ) اون break point اجرا میشه و اگه When changed رو انتخاب کرده باشید ، وقتی شرط تغییر کرد ( از true به false یا از false به true ) اون break point اجرا میشه.
  • hit count : توی این قسمت ما می‌تونیم اجرا شدن break point رو با تعداد دفعاتی که این خط از برنامه اجرا شده محدود کنیم . مثلا بگیم دقیقا در پنجمین باری که این خط اجرا میشه ، بریک پوینت فعال بشه (= , 5) یا مثلا از اجرا های این خط ، یکی در میونش رو می‌خوایم چک کنید ( is a multiply of , 2 ) یا مثلا بعد از 10 بار فعال بشه ( <= , 10).
  • filter : میشه توی این یه سری اطلاعات خاص رو چک کرد. فعلا به درد ما نمی خوره. ولی مثلا میتونیم بگیم اگه machine name یه مقدار خاص بود.
در مورد اکشن ها هم می‌تونیم بگیم که یه عبارت خاص رو برامون مسیج بده و خیلی گزینه خاصی نداره.

حالا یه مورد دیگه که هست. اینه که شما یه برنامه اجرا می‌کنید و برنامتون می‌افته توی یه حلقه و ازش خارج نمی شه. شما می‌تونید خیلی ساده ، بیاید داخل ویژوال استادیو و break all رو بزنید. برنامه درست در همونجایی که هست متوقف میشه و شما میتونید اون loop که برنامه توش گیر کرده رو پیدا کنید.


بازم اگه سوالی داشتید ، نظری و ..... توی نظرات بگید. با نظر گذاشتن هم ما انرژی میگیریم هم وبلاگ رفته رفته بهتر میشه.