
WEBVTT

00:00.110 --> 00:00.860
خوش آمدید.

00:00.860 --> 00:04.910
در این ویدیو می‌خواهم به شما نشان دهم که چگونه اشکال‌زدایی و ثبت لاگ کار می‌کند.

00:04.910 --> 00:11.150
مسئله این است که در حال حاضر ما فقط چیزی را در کنسول نمایش می‌دهیم.

00:11.150 --> 00:15.170
برای مثال، پیام خطا را مستقیماً در کنسول نمایش می‌دهیم.

00:15.170 --> 00:20.810
و در مورد ما، کنسول در واقع برنامه نهایی است.

00:20.810 --> 00:26.480
بنابراین پروژه یا برنامه‌ای که ما به مشتریان خود ارائه می‌دهیم، به اصطلاح.

00:26.480 --> 00:26.990
درست است.

00:26.990 --> 00:33.890
اما اگر بخواهیم مطمئن شویم که مشتری خطاها را نمی‌بیند، اما ما می‌خواهیم آن‌ها را ببینیم

00:33.890 --> 00:40.190
تا بتوانیم کد خود را مطابق آن اصلاح کنیم در حین اشکال‌زدایی و در حین کدنویسی به طور کلی در طول

00:40.190 --> 00:41.810
توسعه، به اصطلاح.

00:41.810 --> 00:44.780
بنابراین می‌توانیم از debug.write line استفاده کنیم.

00:44.780 --> 00:46.700
اجازه دهید به سرعت به شما نشان دهم که منظورم چیست.

00:46.700 --> 00:52.040
فرض کنید می‌خواهم بگویم که متد اصلی در حال اجرا است.

00:52.040 --> 00:54.290
این یک مثال بسیار ساده است.

00:54.290 --> 00:57.800
در واقع این یک مثال واقعی نیست که اینجا منطقی باشد.

00:57.800 --> 01:02.150
اما این به من اجازه می‌دهد بگویم چیزی مانند "متد اصلی در حال اجرا است".

01:02.150 --> 01:05.390
بنابراین متد اصلی در حال اجرا است.

01:05.390 --> 01:05.990
خوب.

01:05.990 --> 01:12.950
حالا اگر این کد را اجرا کنم، خواهیم دید که در پایین سمت راست در خروجی من،

01:12.950 --> 01:15.710
می‌توانم ببینم که متد اصلی در حال اجرا است.

01:15.710 --> 01:24.800
بنابراین این debug یک راه برای ثبت هر چیزی است که می‌خواهید ثبت شود، چه مقدار یک متغیر باشد،

01:24.800 --> 01:28.550
چه برای اطمینان از اینکه یک جریان خاص در حال اجرا است.

01:28.550 --> 01:34.040
بنابراین داده‌های شما یا اجرای کد شما در حال پیروی از یک جریان خاص است، درست است؟

01:34.040 --> 01:39.980
یک جریان کنترل، به اصطلاح، یا اینکه می‌خواهید خطاها را ثبت کنید اما نمی‌خواهید

01:39.980 --> 01:46.940
آن‌ها را به کاربر نمایش دهید، یا می‌خواهید آن‌ها را به کاربر به یک روش نمایش دهید، اما می‌خواهید جزئیات

01:46.940 --> 01:49.430
را به خودتان به روشی پیچیده‌تر نمایش دهید.

01:49.430 --> 01:54.920
بنابراین، برای مثال، اگر این خطای اینجا، این خطای catch exception باشد، درست است.

01:54.920 --> 01:57.680
پیامی که ما به کاربر می‌دهیم بسیار ساده است.

01:57.680 --> 02:00.710
بنابراین اینجا می‌گوییم "خطا: تلاش برای تقسیم بر صفر".

02:00.710 --> 02:07.640
بنابراین این چیزی است که کاربر ما، مشتری به اصطلاح که این فایل Excel را اجرا می‌کند، باید ببیند.

02:07.640 --> 02:08.150
بنابراین

02:08.150 --> 02:12.650
حالا کاربر می‌داند که در آینده نباید صفر وارد کند، به عنوان مثال.

02:12.650 --> 02:20.120
اما اگر بخواهیم بیشتر در مورد آنچه واقعاً اتفاق افتاده است، در مورد خطا بدانیم، حالا واضح است که می‌توانیم

02:20.120 --> 02:24.890
اشکال‌زدایی کنیم که در اینجا نقطه شکست اشکال‌زدایی را اضافه کنیم و غیره.

02:24.890 --> 02:31.160
اما می‌توانیم همچنین به سادگی آن را مستقیماً اجرا کنیم و نتایج را در لاگ خود ببینیم.

02:31.160 --> 02:31.550
خوب.

02:31.550 --> 02:36.830
بنابراین به همین دلیل می‌خواهم بگویم debug.write line.

02:36.830 --> 02:40.760
و اینجا می‌خواهم از exception.stacktrace استفاده کنم.

02:40.760 --> 02:42.710
بنابراین بیایید این را دوباره اجرا کنیم.

02:42.710 --> 02:48.290
و ما پیام را که کاربر دریافت می‌کند همان‌طور که بود، حفظ می‌کنیم.

02:48.290 --> 02:51.410
اما در عین حال به اشکال‌زدا خود نگاه خواهیم کرد.

02:51.410 --> 03:00.470
بنابراین اینجا می‌گوید "استثنا پرتاب شده: استثنای تقسیم بر صفر در try catch exceptions DLL".

03:00.470 --> 03:06.350
بنابراین این فایلی است که برنامه ما به طور خودکار هنگام اجرای کد تولید می‌کند.

03:06.350 --> 03:09.530
بنابراین stack trace ممکن است اطلاعات کافی نباشد.

03:09.530 --> 03:11.240
شاید بخواهیم اطلاعات بیشتری داشته باشیم.

03:11.240 --> 03:15.710
بنابراین بیایید یک رشته از این بیانیه کامل بسازیم.

03:15.710 --> 03:21.140
بنابراین از این استثنا و بیایید ببینیم چه نوع اطلاعاتی این بار خواهیم گرفت وقتی که

03:21.140 --> 03:22.250
بر صفر تقسیم می‌کنیم.

03:22.250 --> 03:24.050
بنابراین تلاش برای تقسیم بر صفر.

03:24.050 --> 03:27.620
بیایید به خروجی خود در داخل اشکال‌زدا نگاه کنیم.

03:27.620 --> 03:34.580
و می‌توانید ببینید که می‌گوید "سیستم تقسیم بر صفر: تلاش برای تقسیم بر صفر در try catch exception program main string".

03:34.580 --> 03:35.360
و سپس می‌گوید

03:35.360 --> 03:37.910
کجا این خطا رخ داده است.

03:37.910 --> 03:41.180
بنابراین می‌گوید که این خطا در خط 19 رخ داده است، خوب.

03:41.180 --> 03:48.710
بنابراین حالا می‌توانم بروم و هر چیزی که در خط 19 اتفاق افتاده است را اصلاح کنم و ببینم که خوب، خطای تقسیم بر صفر.

03:48.710 --> 03:50.810
بنابراین چگونه می‌توانم از آن عبور کنم؟

03:50.810 --> 03:52.520
در واقع می‌توانم بررسی کنم.

03:52.520 --> 03:54.770
آیا کاربر واقعاً یک عدد صحیح وارد کرده است؟

03:54.770 --> 03:56.870
اگر بله، خوب است.

03:56.870 --> 04:00.500
اگر نه، پس کاربر را از مشکل مطلع کنید.

04:00.500 --> 04:07.430
خوب، بنابراین این فقط به شما یک ابزار دیگر می‌دهد که به شما اجازه می‌دهد اشکال‌زدایی کنید، خوب.

04:07.430 --> 04:12.680
بنابراین گاهی اوقات می‌خواهید از نقاط شکست استفاده کنید زیرا دقیقاً می‌دانید که می‌خواهید چیزی را بررسی کنید.

04:12.680 --> 04:18.560
اما گاهی اوقات شما فقط یک برنامه پیچیده دارید که استفاده از نقاط شکست در هر زمان، مانند همه جا،

04:18.560 --> 04:22.010
بسیار کند خواهد بود و این کار زمان زیادی می‌برد.

04:22.010 --> 04:30.350
اما استفاده از اشکال‌زدا به شما اجازه می‌دهد تا وضعیت یک متغیر، وضعیت پروژه خود را به طور کلی

04:30.350 --> 04:34.010
از خطایی که رخ داده است، یا هر استثنایی که رخ داده است، ببینید.

04:34.010 --> 04:38.330
شما می‌توانید همه این‌ها را مستقیماً در خروجی در لاگ خود نمایش دهید.

04:38.330 --> 04:44.360
که سپس به شما اجازه می‌دهد آن را ببینید و در واقع برنامه خود را بهبود ببخشید.

04:44.360 --> 04:46.160
بنابراین برای توسعه این بسیار حیاتی است.

04:46.160 --> 04:55.520
بنابراین حالا چیز دیگری که واقعاً خوب در مورد ویژگی debug است این است که این در برنامه تولید اجرا نخواهد شد.

04:55.520 --> 04:56.660
بنابراین در حال اجرا است

04:56.660 --> 04:59.600
در حین اشکال‌زدایی، که ما در داخل برنامه خود انجام می‌دهیم با قرار دادن ماوس در اینجا.

04:59.850 --> 05:03.810
بنابراین حالا اگر من، به عنوان مثال، بخواهم آن را بدون اشکال‌زدایی اجرا کنم، بیایید به لاگ خود نگاه کنیم و بگذارید بر صفر تقسیم کنم.

05:10.350 --> 05:10.830
اینجا به عنوان یک کاربر خطا می‌گیرم.

05:10.830 --> 05:13.800
اما در اینجا در خروجی چیزی نمی‌بینم.

05:13.800 --> 05:15.990
می‌توانم آن را به debug تغییر دهم.

05:15.990 --> 05:17.490
بنابراین خروجی را از debug نمایش دهید.

05:17.490 --> 05:19.590
و می‌بینید که هیچ چیزی نمی‌بینم.

05:19.590 --> 05:21.660
این به این دلیل است که من در حالت اشکال‌زدایی نیستم.

05:21.660 --> 05:24.180
این به این دلیل است که من در حالت build هستم، که در نهایت به اصطلاح حالت تولید است.

05:24.180 --> 05:29.730
بنابراین آنچه که کاربر نهایی خواهد دید.

05:29.730 --> 05:32.580
و این فقط به این معنی است که هر زمان که زمان اجرای لازم است یا قدرت پردازش لازم است

05:32.580 --> 05:40.560
برای اجرای این خط، در طول تولید لازم نخواهد بود.

05:40.560 --> 05:45.000
بنابراین فقط در طول اشکال‌زدایی لازم خواهد بود.

05:45.000 --> 05:47.100
بنابراین این خط بعدی فقط در طول اشکال‌زدایی اجرا می‌شود.

05:47.100 --> 05:54.810
خوب، بنابراین این یکی دیگر از ویژگی‌های جالب در مورد این ویژگی ثبت است.

05:54.810 --> 05:58.500
حالا ویژگی‌های ثبت دیگری نیز وجود دارد.

05:58.500 --> 06:03.120
بنابراین برخی از آن‌ها به شما اجازه می‌دهند حتی در یک فایل ثبت کنید.

06:03.120 --> 06:07.650
بنابراین جایی که می‌توانید سپس خطاها را مستقیماً در یک فایل ببینید.

06:07.650 --> 06:11.400
و این بسیار مفید است.

06:11.400 --> 06:13.230
برای مثال، اگر کاربران با خطاهایی مواجه شوند و شما به این اطلاعات نیاز دارید

06:13.230 --> 06:22.080
تا سپس برنامه خود را به‌روزرسانی کنید، زیرا سپس می‌بینید که چه نوع خطاهایی کاربران با آن مواجه شده‌اند، وگرنه ممکن است شما آن را نبینید

06:22.080 --> 06:27.990
زیرا شما آن را به روش خود آزمایش می‌کنید.

06:27.990 --> 06:29.790
اما کاربران برنامه شما را به روش‌های مختلفی استفاده می‌کنند و سپس استفاده از یک روش ثبت دیگر

06:29.790 --> 06:35.490
بسیار حیاتی خواهد بود.

06:35.490 --> 06:36.540
خوب، اما این فقط برای شما در حین اشکال‌زدایی است.

06:36.540 --> 06:39.270
واقعاً یک ابزار قدرتمند و کوچک به اصطلاح.

06:39.270 --> 06:43.170
یک ابزار کوچک که فقط کار خود را برای شما انجام می‌دهد.
```
