۵ تکنیکِ مهم اشکال‌زدایی در اندروید استودیو

نویسنده : سید ایوب کوکبی ۸ خرداد ۱۳۹۸
5 تکنیکِ مهم اشکال‌زدایی در اندروید استودیو

یکی از مهم‌ترین مهارت‌های هر توسعه‌دهنده، سطح توانایی او در اشکال‌زدایی یا دیباگینگ برنامه است. برنامه‌نویسی فقط کدنویسی نیست؛ بخش عمده‌ای از وقت، صرف یافتن اشکالات و برطرف کردن آن‌ها می‌شود. گاهی از نتایجی که دیباگر نشان می‌دهد چیزی متوجه نمی‌شویم یا دنبالۀ فرخوانی توابع (Stack Trace) را درک نمی‌کنیم. در این جستار، شما را با تعدادی از ترفندهای مهم دیباگینگ در اندروید استودیو آشنا می‌کنیم.

اتچ کردن دیباگر

ما معمولاً به زدن دکمۀ دیباگ عادت کرده‌ایم حتی زمانی که هیچ تغییر جدیدی در کد اعمال نکرده‌ باشیم. آن بالا در نوار ابزار دکمه‌ای هست تحت عنوان Attach Debugger. روی آن کلیک کنید؛ پنجره‌ای باز می‌شود که می‌توانید پراسس مورد نظر را انتخاب کنید. با این کار دیباگر اندروید به آن Process متصل شده و مقادیر مورد نظر را می‌توانید در پنجرۀ دیباگ مشاهده کنید. دیگر لازم نیست زمان زیادی صرف اتصال مجدد به دیباگر کنید.

اتچ دیباگر در اندروید استودیو
اتچ دیباگر در اندروید استودیو

بریک‌پوینت‌ شرطی

وقتی قرار است حلقه‌ای با هزار دور را در دور ۵۲۶ام برای مشاهدۀ مقادیر متغیرها متوقف کنید چاره‌ای جز استفاده از Conditional Breakpointها ندارید؛ یعنی روی آن حلقه یک بریک‌پوینت قرار می‌دهید، سپس با کلیک راست روی آن بریک پوینت عبارتی شرطی وارد می‌کنید. مثلاً i==5 یعنی وقتی حلقه به دور پنجم رسید اجرای برنامه را متوقف کن.

اکسپشن بریک‌پوینت

گاهی بررسی stacktrace نتیجه‌ای جز سردرگمی ندارد؛ در واقع شما متوجه منشأ خطا یا استثناء (Exception) نمی‌شوید. در چنین وضعیتی به جای تیری در تاریکی زدن و گذاشتن بریک‌پوینت در نقطه‌ای نامشخص از قابلیت ویژۀ اندروید استودیو استفاده کنید. به این صورت که هر وقت استثنایی بروز کرد، اجرای برنامه در همان نقطه متوقف شود:

  1. بروید به Run – View Breakpoints؛
  2. روی دکمۀ + و سپس Java Exception Breakpoint کلیک کنید؛
  3. اکسپش دلخواهی انتخاب کنید؛
  4. برای سایر انواع اکسپشن هم می‌توانید به همین صورت بریک‌پوینت تعریف کنید؛
  5. مطمئن شوید همه Breakpointها تیک خورده باشند؛
  6. حالا برنامه را طبق روال معمول دیباگ کنید. هر زمان اکسپشنی رخ داد، برنامه در محلی که عامل بروز آن استثناء بوده توقف می‌کند.
بخوانید  آموزش توسعۀ آزمون محور (TDD) در اندروید - قسمت اول

کال استک در اندروید استودیو

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

مثلاً در تصویر بالا، تابع جاری ()setUpRecyclerView است که توسط تابع دیگری به نام ()setUpWidgets فرخوانی شده است که این تابع نیز توسط ()onCreate فرا خوانده شده است.

شما می‌توانید مقادیر متغیرها را در هر فراخوانی مشاهده کنید:

این کار می‌توانید تا اولین تابع یعنی تابع main که اجرای برنامه از آنجا آغاز شده ادامه دهید.

ارزیابی عبارات

بررسی مقدار متغیرها در زمان اشکال‌زدایی کار مفیدی است. انگار زمان متوقف شده و در آن لحظۀ بخصوص همۀ اجزای برنامه را از نمای نزدیک می‌بینید. اما توانایی اندروید استودیو محدود به این نیست. حتی این امکان وجود دارد که در هنگام توقف برنامه در یک بریک‌پوینت مشخص با اندکی کدنویسی نتایج بیشتری مشاهده کنید. این کار را Evaluate Expression یا ارزیابی عبارات‌ها می‌گویند.

  1. بعد از توقف برنامه در یک بریک‌پوینت، روی دکمۀ evaluate expression در پنجرۀ دیباگ کلیک کنید؛
  2. حالا یک عبارت دلخواه وارد کنید تا نتیجه را ببینید. به یاد داشته باشید که عبارت وارد شده باید چیزی برای برگرداندن داشته باشد؛
  3. اگر با یک اکسپرژن کارتان راه نیفتاد با کلیک روی Code Fragment Mode می‌توانید یک قطعه کد طولانی‌تر را اجرا کنید.

سید ایوب کوکبی

نویسنده و مترجم...

0 دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *