اشکال زدایی، در برنامه نویسی و مهندسی رایانه ، یک فرایند چند مرحله ای است که شامل شناسایی یک مشکل، مشخص کردن مکان آن ، و سپس اصلاح مشکل یا تعیین راهی برای حل آن است. آخرین مرحله اشکال زدایی این است که اصلاح یا راه حل را آزمایش کرده و مطمئن شوید که کار می کند.

در توسعه نرم افزار، فرآیند اشکال زدایی زمانی آغاز می شود که توسعه دهنده، خطای موجود را در برنامه کامپیوتری پیدا کرده و بتواند آن را بازتولید کند. اشکال زدایی بخشی از فرایند تست نرم افزار و بخشی جدایی ناپذیر از کل چرخه عمر توسعه نرم افزار است.

در توسعه سخت افزار، فرآیند اشکال زدایی معمولاً به دنبال اجزای سخت افزاری است که به درستی نصب یا پیکربندی نشده اند. به عنوان مثال، یک مهندس ممکن است آزمایش اتصال JTAG را برای اشکال زدایی اتصالات در یک مدار مجتمع اجرا کند.

نحوه اشکال زدایی یا خطا یابی در نرم افزار

به طور معمول، فرآیند اشکال زدایی به محض نوشتن کدها شروع می شود و در مراحل گوناگون توسعه پی در پی ادامه می یابد. در یک برنامه بزرگ که صدها و هزاران خط کد دارد، می توان با استفاده از استراتژی هایی مانند تست واحد، بازبینی کدها و برنامه نویسی جفتی، روند اشکال زدایی را آسان تر کرد.

برای شناسایی اشکالات موجود، می توانید از یک ابزار اشکال زدایی مستقل یا حالت اشکال زدایی یک محیط توسعه یکپارچه (IDE) استفاده کنید. در برخی موارد، ماژولی که مشکل دارد، واضح است، در حالی که خطوطی از کد که با خطا مواجه شده اند، مشخص نیستند.

در این حالت، آزمایشات واحد مانند JUnit و xUnit ، که به برنامه نویس اجازه می دهد تا یک عملکرد خاص را با ورودی های مشخصی اجرا کند، می تواند در اشکال زدایی مفید باشد. روش استاندارد این است که یک "نقطه شکست" را تنظیم کرده و برنامه را تا آن نقطه شکست اجرا کنید، در این زمان اجرای برنامه متوقف می شود.

ابزار اشکال زدایی IDE به طور معمول این امکان را در اختیار برنامه نویس قرار می دهد که حافظه را مشاهده کرده و متغیرها را ببیند و سپس برنامه را تا نقطه شکست بعدی اجرا کند و یا خط به خط اجرای برنامه را جلو ببرد.

اهمیت اشکال زدایی

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

اشکال زدایی در مقایسه با تست

اشکال زدایی و تست فرآیندهایی مکمل یکدیگر هستند. هدف از آزمایش و تست شناسایی مواردی است که هنگام اشتباه در سورس کد برنامه رخ می دهد. هدف از اشکال زدایی یافتن و رفع خطا است.

فرایند آزمایش و تست به توسعه دهندگان کمک نمی کند، بفهمد اشتباه برنامه نویسی آنها چیست، بلکه به سادگی نشان می دهد که خطای برنامه نویسی چه تاثیری بر برنامه دارد. هنگامی که خطا شناسایی شد، اشکال زدایی به توسعه دهنده کمک می کند تا علت خطا را تعیین کرده و بتواند آن را برطرف کند.

مثال ها

چند نمونه از خطاهای رایج برنامه نویسی شامل موارد زیر است:

  • خطای نوشتاری
  • خطای زمان اجرا
  • خطای معنایی
  • خطای منطقی
  • نادیده گرفتن قراردادهای تصویب شده در استاندارد کدنویسی
  • فراخوانی توابع اشتباه
  • استفاده از نام نادرست متغیر اشتباه در جایی نامناسب
  • عدم مقداردهی اولیه

ابزارهای اشکال زدایی

اشکال زدایی یک ابزار نرم افزاری است که می تواند با شناسایی خطاهای برنامه نویسی در مراحل مختلف سیستم عامل یا توسعه برنامه، به فرایند توسعه نرم افزار کمک کند. برخی از اشکال زداها یک اجرای آزمایشی را تجزیه و تحلیل می کنند تا ببینند چه خطوطی از کد اجرا نشده است.

سایر ابزارهای اشکال زدایی به برنامه نویس اجازه می دهد تا نحوه نمایش و رفتار یک برنامه را در سیستم عامل یا دستگاه محاسباتی مدلسازی کند. بسیاری از ابزارهای اشکال زدایی منبع باز و زبان های برنامه نویسی در IDE اجرا نمی شوند، بنابراین برای اشکال زدایی به رویکرد دستی تری نیاز دارند. به عنوان مثال، اشکال زدایی USB به دستگاه Android اجازه می دهد تا با رایانه ای که SDK Android را اجرا می کند ارتباط برقرار کند.

چالش های اشکال زدایی

فرآیند اشکال زدایی می تواند بسیار دشوار باشد، این فرایند می تواند به خصوص زمانی چالش برانگیز باشد که:

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

تاریخچه اشکال زدایی

استفاده از کلمه bug به عنوان مترادف خطا در مهندسی ایجاد شده است. کاربرد این اصطلاح در محاسبات و الهام گرفتن از کلمه اشکال زدایی به عنوان مترادف عیب یابی، به دریادار گریس هاپر، پیشگام برنامه نویسی رایانه نسبت داده شده است. هنگامی که یک حشره واقعی (یک پروانه) بین رله های برق گیر کرد و باعث ایجاد مشکل در اولین کامپیوتر نیروی دریایی ایالات متحده شد، دریادار هاپر و تیمش کامپیوتر را "اشکال زدایی" یا debuging کردند و پروانه را نجات دادند.

برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام لرن سورس عضو شوید.