ایده‌هایی برای دیباگ کردن

July 05, 2020

توی این پست در مورد یک سری ایده کلی برای دیباگ کردن که همیشه بهم کمک کردن. این پست قبلتر به صورت یک رشته توییت منتشر شده.

مشکل رو توضیح بدید.

کار نمی‌کنه یا درست جواب نمیده اطلاعات کافی برای حل مشکل شما نیست. سعی کنید دقیق‌تر توصیفش کنید والبته حالت ایده‌آل اینه که بتونید یه سری مراحل مشخص کنید که اگه انجام داده بشن مشکل دوباره تولید بشه.

مشکل رو ایزوله کنید

اگه خطایی توی کدبیس با چند میلیون خط کد باشه حل کردنش یعنی خوندن چند میلیون خط کد. سعی کنید با بررسی کردن مراحلی که تو قسمت قبل مشخص کردید بخش کوچیکی از کد رو مقصر اعلام کنید و اونجا دنبال خطا بگردید. این کار ممکنه خیلی سخت به نظر بیاد اما به مرور آسون میشه

مثلا اگه کلیدی که می‌زنید تغییرات رو اعمال نمی‌کنه، اول مطمئن بشید کلید درست داره دستور رو به بک‌اند ارسال می‌کنه. بعد مطمئن بشید بک‌اند درست داره تفسیرش می‌کنه. بعد مطمئن بشید که درست توی دیتابیس نوشته میشه و در نهایت مطمئن بشید نتایج درست داره نشون داده میشه.

تست بنویسید

بهترین زمان برای تست نوشتن قبل از نوشتن کد هست، اما اگه تستی ننوشتید و خطایی پیدا شده، برای همه دست‌اندرکاران اون خطا تست بنویسید، هم به پیدا کردن این خطا کمک می‌کنه هم از خطاهای بعدی جلوگیری می‌کنه.

همه چیز رو لاگ کنید

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

محیط رو عوض کنید

سعی کنید مشکل رو تو یک سیستم تمیز بازتولید کنید. کانتینرها می‌تونن به شما کمک کنن که خیلی سریع سیستمتون رو (شامل دیتابیس) تمیز و خالی بالا بیارید. بعضی وقتا چیزی که باعث مشکل میشه تنظیمات اشتباهه یا دیتاهای قدیمی، در هر صورت جدا کردنش کمک می‌کنه.

روی دیتای کوچیک‌تر تست کنید

اگه کدتون قراره روی چند گیگابایت دیتا اجرا بشه، رسیدنش به مشکل انقدر طول می‌کشه و انقدر حجم دیتا بالاست که انسان نمی‌تونه مشکل رو پیدا کنه. ولی اگه بتونید همون کد رو روی تعداد محدودی داده اجرا کنید حتا دستی می‌تونید بررسی کنید که همه چیز درست باشه

روی دیتای بزرگ‌تر تست کنید

برعکس حالت قبل، بعضی مشکلا از حجم زیاد دیتا / درخواست درست میشه و تو حالت‌های دیگه اصلا به وجود نمیان. مثلا race conditionها. اگه مشکلی تو پروداکشن هست که توی دولوپ نمی‌تونید بازسازیش کنید، شاید حجم زیاد کمک به پیدا شدنش کنه.

روی چیز دیگری کار کنید

ذهن انسان خیلی محدوده و اگه مدت زیادی روی چیزی کار کردید، احتمالا خطاهای بدیهی رو نبینید. برای چند ساعت روی مسئله دیگری کار کنید و بعد با ذهنی آزاد برگردید.

برای کسی توضیح بدید

توضیح دادن یا بلند بلند فکر کردن می‌تونه بهتون کمک کنه تا مشکلات بدیهی رو پیدا کنید. این توضیح دادن در واقع به شما یادآوری می‌کنه که پیش‌فرض ذهنیتون از هر تیکه کد چیه و اگر مغایرتی باشه سریع متوجهش میشید.

شما برای دیباگ کردن چه کارهایی می‌کنید؟ اگه راهکار های کلی دیگه‌ای دارید می‌تونید به اینجا ملحق شوید و یا عضو کانال ما شوید.