Debugging with IntelliJ | دیباگ کردن با اینتلیج
توضیحات جلسه
جزوه و مستندات
مفاهیم کلیدی
Debugging
فرایند شناسایی، ردیابی و رفع خطاها یا رفتارهای ناخواسته در کد برنامه را Debugging مینامند.
Tracing
منظور از Tracing، دنبال کردن اجرای کد بهصورت خطبهخط است تا اتفاقات مربوط به حافظه و جریان اجرای برنامه را دقیقتر درک کنیم.
Breakpoint
Breakpoint نقطه توقفی است که برنامهنویس هنگام کدنویسی مشخص میکند تا اجرای برنامه در آن خط متوقف شود و بتوان وضعیت متغیرها را بررسی کرد.
Debug Mode
Debug Mode حالتی از اجرای برنامه است که ابزارهای کنترلی دیباگر را فعال میکند و امکان کنترل مرحلهبهمرحله برنامه را فراهم میسازد.
Step Over (F8)
دستور Step Over با میانبر F8 باعث میشود برنامه یک خط جلو برود. اگر خط فعلی شامل فراخوانی یک متد باشد، دیباگر وارد آن متد نمیشود و فقط نتیجه اجرای آن را دریافت میکند.
Resume Program (F9)
دستور Resume Program با میانبر F9 اجرای برنامه را از محل توقف فعلی ادامه میدهد؛ تا زمانی که برنامه به Breakpoint بعدی برسد یا اجرای آن به پایان برسد.
Evaluate Expression
ابزار Evaluate Expression، که معمولاً با آیکون ماشینحساب نمایش داده میشود، اجازه میدهد هنگام توقف برنامه، قطعهکدها یا عبارتهای منطقی دلخواه را با دادههای فعلی اجرا و بررسی کنید.
Variables View
بخش Variables View در محیط IDE، همه متغیرهای موجود در محدوده فعلی (Scope) و مقدار لحظهای آنها را نمایش میدهد.
نکات مهم مصاحبهای
چرا استفاده از Debugger بهتر از چاپ کردن مقادیر با sout است؟
دیباگر اجازه میدهد بدون تغییر در کد اصلی و بدون نیاز به اجرای مجدد برنامه برای هر تغییر، همه متغیرها را بهصورت زنده مشاهده کنید، مقدار آنها را در لحظه تغییر دهید و جریان اجرای کد را در مسیرهای پیچیده، مانند حلقههای طولانی، کنترل کنید.
تفاوت کلیدی بین F8 و F9 در محیط IntelliJ چیست؟
کلید F8 یا Step Over برای حرکت دقیق و خطبهخط در کد استفاده میشود.
کلید F9 یا Resume Program اجرای برنامه را از یک نقطه توقف به نقطه توقف بعدی ادامه میدهد و اجرای خطبهخط کدهای بین این دو نقطه را نادیده میگیرد.
آیا میتوان در زمان اجرا (Runtime) مقدار یک متغیر را تغییر داد؟
بله. با استفاده از قابلیت Set Value در بخش متغیرهای دیباگر، میتوان مقدار یک متغیر را در زمانی که برنامه متوقف شده است تغییر داد. به این شکل، میتوان رفتار برنامه را با دادههای متفاوت و بدون تغییر کد بررسی کرد.
مثال یا سناریوی کاربردی
در ویدیو، سناریوی بررسی اعتبار شماره تلفن (Phone Number Validation) نمایش داده شد:
۱. قرار دادن Breakpoint:
ابتدا روی شماره خطها در متد اصلی کلیک میکنیم تا نقاط توقف مشخص شوند.
۲. اجرا در حالت Debug:
بهجای دکمه Run، از دکمه Debug استفاده میکنیم.
۳. بررسی شرطها:
برنامه در خطی که طول شماره تلفن را با شرط length != 11 بررسی میکند، متوقف میشود.
۴. مشاهده مقادیر:
در بخش Variables، ورودی کاربر را مشاهده میکنیم؛ برای مثال، ممکن است مقدار ورودی "10" باشد.
۵. محاسبه عبارتها:
با ابزار Evaluate Expression بررسی میکنیم که آیا اولین کاراکتر شماره تلفن برابر با صفر است یا خیر.
۶. ردیابی حلقه:
در حلقه for که تکتک کاراکترها را بررسی میکند، با فشردن F8 مشاهده میکنیم که متغیر counter پس از تشخیص هر عدد، چگونه افزایش مییابد.
بیشتر بدانید
نکته IDE
در IntelliJ، برای قراردادن Breakpoint کافی است در نوار کناری سمت چپ و کنار شماره خط موردنظر کلیک کنید. آیکون دایره قرمز نشاندهنده نقطه توقف روی خط و آیکون لوزی نشاندهنده توقف روی متدها است.
نکته فنی
اگر در حلقهای هستید که 1000 بار تکرار میشود، بهجای فشردن F8 برای هر تکرار، یک Breakpoint بعد از حلقه قرار دهید و F9 را فشار دهید تا مستقیماً به خروجی حلقه برسید.
تغییر مقدار در لحظه
میتوانید روی یک متغیر در بخش Variables راستکلیک کرده و گزینه Set Value را انتخاب کنید تا مقدار آن تغییر کند.
برای مثال، میتوانید نام کاربری ورودی را از "Farzad" به "Admin" تغییر دهید تا سطح دسترسی متفاوتی را آزمایش کنید.
