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