خوش آمدید.
در این ویدیو می‌خواهم به شما نشان دهم که چگونه اشکال‌زدایی و ثبت لاگ کار می‌کند.
مسئله این است که در حال حاضر ما فقط چیزی را در کنسول نمایش می‌دهیم.
برای مثال، پیام خطا را مستقیماً در کنسول نمایش می‌دهیم.
و در مورد ما، کنسول در واقع برنامه نهایی است.
بنابراین پروژه یا برنامه‌ای که ما به مشتریان خود ارائه می‌دهیم، به اصطلاح.
درست است.
اما اگر بخواهیم مطمئن شویم که مشتری خطاها را نمی‌بیند، اما ما می‌خواهیم آن‌ها را ببینیم
تا بتوانیم کد خود را مطابق آن اصلاح کنیم در حین اشکال‌زدایی و در حین کدنویسی به طور کلی در طول
توسعه، به اصطلاح.
بنابراین می‌توانیم از debug.write line استفاده کنیم.
اجازه دهید به سرعت به شما نشان دهم که منظورم چیست.
فرض کنید می‌خواهم بگویم که متد اصلی در حال اجرا است.
این یک مثال بسیار ساده است.
در واقع این یک مثال واقعی نیست که اینجا منطقی باشد.
اما این به من اجازه می‌دهد بگویم چیزی مانند "متد اصلی در حال اجرا است".
بنابراین متد اصلی در حال اجرا است.
خوب.
حالا اگر این کد را اجرا کنم، خواهیم دید که در پایین سمت راست در خروجی من،
می‌توانم ببینم که متد اصلی در حال اجرا است.
بنابراین این debug یک راه برای ثبت هر چیزی است که می‌خواهید ثبت شود، چه مقدار یک متغیر باشد،
چه برای اطمینان از اینکه یک جریان خاص در حال اجرا است.
بنابراین داده‌های شما یا اجرای کد شما در حال پیروی از یک جریان خاص است، درست است؟
یک جریان کنترل، به اصطلاح، یا اینکه می‌خواهید خطاها را ثبت کنید اما نمی‌خواهید
آن‌ها را به کاربر نمایش دهید، یا می‌خواهید آن‌ها را به کاربر به یک روش نمایش دهید، اما می‌خواهید جزئیات
را به خودتان به روشی پیچیده‌تر نمایش دهید.
بنابراین، برای مثال، اگر این خطای اینجا، این خطای catch exception باشد، درست است.
پیامی که ما به کاربر می‌دهیم بسیار ساده است.
بنابراین اینجا می‌گوییم "خطا: تلاش برای تقسیم بر صفر".
بنابراین این چیزی است که کاربر ما، مشتری به اصطلاح که این فایل Excel را اجرا می‌کند، باید ببیند.
بنابراین
حالا کاربر می‌داند که در آینده نباید صفر وارد کند، به عنوان مثال.
اما اگر بخواهیم بیشتر در مورد آنچه واقعاً اتفاق افتاده است، در مورد خطا بدانیم، حالا واضح است که می‌توانیم
اشکال‌زدایی کنیم که در اینجا نقطه شکست اشکال‌زدایی را اضافه کنیم و غیره.
اما می‌توانیم همچنین به سادگی آن را مستقیماً اجرا کنیم و نتایج را در لاگ خود ببینیم.
خوب.
بنابراین به همین دلیل می‌خواهم بگویم debug.write line.
و اینجا می‌خواهم از exception.stacktrace استفاده کنم.
بنابراین بیایید این را دوباره اجرا کنیم.
و ما پیام را که کاربر دریافت می‌کند همان‌طور که بود، حفظ می‌کنیم.
اما در عین حال به اشکال‌زدا خود نگاه خواهیم کرد.
بنابراین اینجا می‌گوید "استثنا پرتاب شده: استثنای تقسیم بر صفر در try catch exceptions DLL".
بنابراین این فایلی است که برنامه ما به طور خودکار هنگام اجرای کد تولید می‌کند.
بنابراین stack trace ممکن است اطلاعات کافی نباشد.
شاید بخواهیم اطلاعات بیشتری داشته باشیم.
بنابراین بیایید یک رشته از این بیانیه کامل بسازیم.
بنابراین از این استثنا و بیایید ببینیم چه نوع اطلاعاتی این بار خواهیم گرفت وقتی که
بر صفر تقسیم می‌کنیم.
بنابراین تلاش برای تقسیم بر صفر.
بیایید به خروجی خود در داخل اشکال‌زدا نگاه کنیم.
و می‌توانید ببینید که می‌گوید "سیستم تقسیم بر صفر: تلاش برای تقسیم بر صفر در try catch exception program main string".
و سپس می‌گوید
کجا این خطا رخ داده است.
بنابراین می‌گوید که این خطا در خط 19 رخ داده است، خوب.
بنابراین حالا می‌توانم بروم و هر چیزی که در خط 19 اتفاق افتاده است را اصلاح کنم و ببینم که خوب، خطای تقسیم بر صفر.
بنابراین چگونه می‌توانم از آن عبور کنم؟
در واقع می‌توانم بررسی کنم.
آیا کاربر واقعاً یک عدد صحیح وارد کرده است؟
اگر بله، خوب است.
اگر نه، پس کاربر را از مشکل مطلع کنید.
خوب، بنابراین این فقط به شما یک ابزار دیگر می‌دهد که به شما اجازه می‌دهد اشکال‌زدایی کنید، خوب.
بنابراین گاهی اوقات می‌خواهید از نقاط شکست استفاده کنید زیرا دقیقاً می‌دانید که می‌خواهید چیزی را بررسی کنید.
اما گاهی اوقات شما فقط یک برنامه پیچیده دارید که استفاده از نقاط شکست در هر زمان، مانند همه جا،
بسیار کند خواهد بود و این کار زمان زیادی می‌برد.
اما استفاده از اشکال‌زدا به شما اجازه می‌دهد تا وضعیت یک متغیر، وضعیت پروژه خود را به طور کلی
از خطایی که رخ داده است، یا هر استثنایی که رخ داده است، ببینید.
شما می‌توانید همه این‌ها را مستقیماً در خروجی در لاگ خود نمایش دهید.
که سپس به شما اجازه می‌دهد آن را ببینید و در واقع برنامه خود را بهبود ببخشید.
بنابراین برای توسعه این بسیار حیاتی است.
بنابراین حالا چیز دیگری که واقعاً خوب در مورد ویژگی debug است این است که این در برنامه تولید اجرا نخواهد شد.
بنابراین در حال اجرا است
در حین اشکال‌زدایی، که ما در داخل برنامه خود انجام می‌دهیم با قرار دادن ماوس در اینجا.
بنابراین حالا اگر من، به عنوان مثال، بخواهم آن را بدون اشکال‌زدایی اجرا کنم، بیایید به لاگ خود نگاه کنیم و بگذارید بر صفر تقسیم کنم.
اینجا به عنوان یک کاربر خطا می‌گیرم.
اما در اینجا در خروجی چیزی نمی‌بینم.
می‌توانم آن را به debug تغییر دهم.
بنابراین خروجی را از debug نمایش دهید.
و می‌بینید که هیچ چیزی نمی‌بینم.
این به این دلیل است که من در حالت اشکال‌زدایی نیستم.
این به این دلیل است که من در حالت build هستم، که در نهایت به اصطلاح حالت تولید است.
بنابراین آنچه که کاربر نهایی خواهد دید.
و این فقط به این معنی است که هر زمان که زمان اجرای لازم است یا قدرت پردازش لازم است
برای اجرای این خط، در طول تولید لازم نخواهد بود.
بنابراین فقط در طول اشکال‌زدایی لازم خواهد بود.
بنابراین این خط بعدی فقط در طول اشکال‌زدایی اجرا می‌شود.
خوب، بنابراین این یکی دیگر از ویژگی‌های جالب در مورد این ویژگی ثبت است.
حالا ویژگی‌های ثبت دیگری نیز وجود دارد.
بنابراین برخی از آن‌ها به شما اجازه می‌دهند حتی در یک فایل ثبت کنید.
بنابراین جایی که می‌توانید سپس خطاها را مستقیماً در یک فایل ببینید.
و این بسیار مفید است.
برای مثال، اگر کاربران با خطاهایی مواجه شوند و شما به این اطلاعات نیاز دارید
تا سپس برنامه خود را به‌روزرسانی کنید، زیرا سپس می‌بینید که چه نوع خطاهایی کاربران با آن مواجه شده‌اند، وگرنه ممکن است شما آن را نبینید
زیرا شما آن را به روش خود آزمایش می‌کنید.
اما کاربران برنامه شما را به روش‌های مختلفی استفاده می‌کنند و سپس استفاده از یک روش ثبت دیگر
بسیار حیاتی خواهد بود.
خوب، اما این فقط برای شما در حین اشکال‌زدایی است.
واقعاً یک ابزار قدرتمند و کوچک به اصطلاح.
یک ابزار کوچک که فقط کار خود را برای شما انجام می‌دهد. ```