دیباگ یا رفع اشکال در متلب
موسسه پایاپروژه به عنوان متصدی انجام پروژه متلب وظیفه ی خود می داند که در راستای آموزش نرم افزار متلب گام های موثری را بردارد. با توجه به اینکه یک دوره آموزشی متلب مستلزم تمرین و تلاش بسیار است. اما این موسسه تلاش می کند سهم کوچکی در جهت یادگیری شما داشته باشد.در این بخش از آموزش متلب می خواهیم پیرامون موضوع مهمی در نرم افزار متلب با عنوان debugging یا اشکال زدایی در اسناد کاری متلب صحبت کنیم. با ما همراه باشید.
دیباگ چیست؟
بسیار پیش می آید که هنگام برنامه نویسی در متلب، با خطاها و هشدارهایی مواجه می شویم که روند انجام کار را با اختلال مواجه می کنند. نرم افزار متلب برای رفع سریع تر این مشکلات راهکارهایی دارد و توابع و کدهای دستوری برای این مواقع پیش بینی شده است که تحت عنوان debugging شناخته می شوند.
به تعبیر دیگر به فرآیند شناسایی، بررسی و رفع ایراد های موجود در یک کد، دیباگ گفته می شود. وقتی کدی در پروژه متلب اجرا نمی شود یا خروجی درستی تحویل نمی دهد، ضرورت این روش ایجاد می شود. که با استفاده از ابزارهای دیباگ، امشکل اصلی پیدا شده و در صدد رفع آن بر می آییم.
دیباگ کردن یعنی: پیدا کنیم که “کد در واقع کجا و چرا مشکل دارد؟”
چرا debugging یا اشکال زدایی در انجام پروژه متلب مهم است؟
در پروژه های دانشگاهی و یا شخصی، کدنویسی صرفا کافی نیست. بلکه باید خروجی قابل فهم و درستی برای ارائه آماده نمود. در اینصورت اکثر دانشجویان پروژه را ناقص تحویل داده، یا خروجی اشتباه میگیرند. که منجر به رد شدن پروژه می شود. برهمین اساس یادگیری دیباگ یا رفع ایراد در انجام پروژه متلب حائز اهمیت است.
مشکلات رایجی که به دیباگ نیازمند هستند:
- عدم اجرای کد
- خروجی اشتباه
- خطا در حلقه های for/while
- ایراد در توابع
- سازگار نبودن داده ها
انواع خطاهای متداول در متلب:
- خطای نحوی یاSyntax Errors: مثل فراموش کردن نقطه ویرگول ; و یا اشتباه در نوشتن دستورهای مختلف
- خطاهای منطقی یا Logical Errors : دراین نوع خطا کد اجرا می شود اما خروجی اشتباه است. که یکی از سخت ترین انواع دیباگ یا اشکال زدایی ها در متلب می باشد.
- خطا حین اجرا یا Runtime Errors : مثل تقسیم بر صفر یا دسترسی به اندیس غیر معتبر
نکات مهم و حرفه ای جهت دیباگ سریع:
- بخش بندی کد
- شروع کردن از داده های تست ساده
- تغییر فقط یکبار در هر مرحله
- استفاده از
dispیاfprintfبرای نمایش مقدارها
جهت مشاهده مقاله جامعی از اشتباهات رایج در پروژه های متلب رشته برق پیشنهاد میکنیم مقاله زیر را مطالعه نمایید.
جهت مشاهده مقاله اشتباهات رایج در متلب کلیک نمایید.
راه حل های رفع دیباگ کدهای متلب:
- حذف کردن نقطه ویرگول در نمایش خروجی.
- اجرای کد تا یک خط مشخص و کلیک برای ران کردن کد.
- کلیک روی دکمه Pause، برای مکث در فایل طولانی.
- فشردن دکمه Step In در حین مکث، جهت ورود به تواقع و اسکریپت ها
- افزون نقاط شکست به فایل تا زمان اجرای کد، فعال کردن مکث در خطوط مشخص و خاص.
پیش از آنکه دیباگ انجام دهید، فایل کد خود را ذخیره نمایید تا از نتایج غیر منتظره جلوگیری شود. و اطمینان پیدا کنید که فایل های کد و فایل هایی که فراخوانی میکنید، در مسیر سرچ و جستچو یا در پوشه فعلی موجود هستند.
نرم افزار متلب با توجه به اینکه دیباگ کردن از کجا انجام میگیرد، تغییراتی که ذخیره نشده اند را بطور متفاوتی مدیریت می کند:
- ادیتور: اگر فایلی شامل تغییراتی باشد که ذخیره نشده باشند، متلب پیش از اجرا، آن فایل را ذخیره می کند.
- لایو ادیتور: متلب همه تغییراتی که در یک فایل انجام داده اید را اجرا میکند. چه ذخیره شده باشند چه نشده باشند.
- پنجره فرمان: اگر فایلی شامل تغییراتی باشد که ذخیره نشده باشد، متلب آن فایلی را اجرا میکند که ذخیره شده باشد، و شما نتیجه ای از تغییرات خود مشاهده نخواهید کرد.
توابع اشکال زدایی یا debugging در متلب
تابع dbclear: این تابع برای حذف نقاط breakpoint در سند کاری متلب به کار می رود. اگر از دستور dbclear all استفاده کنیم، تمام نقاط breakpoint را در تمام اسناد کاری حذف می کند، همچنین نقاط breakpoint تنظیم شده برای خطاها، هشدارها و پیغام های naninf / infnan را حذف می کند.
تابع dbcont : اجرای یک فایل کد MATLAB را از یک نقطه breakpoint از سر می گیرد. اجرا تا زمانی که نقطه انفصال دیگری مشاهده نشود، شرط مکث برآورده شود، خطایی رخ دهد یا نرم افزار MATLAB به درخواست فضای کاری پایه بازگردد، ادامه می یابد.
تابع dbquit: این تابع حالت اشکال زدایی یا debugging را خاتمه می دهد. سپس Command Window خط استاندارد را نمایش می دهد (>>). سند در حال اجرا تکمیل نشده و هیچ نتیجه ای بازگردانده نمی شود. همه نقاط شکست یا breakpoint ها در سند باقی می مانند، مگر اینکه سند کاری شامل یکی از دستورات clear all clear function, clear classes باشد.

Debugging در متلب
تابع dbstatus: با استفاده از این تابع، تمام نقاط breakpoint از جمله خطاها، هشدارها و naninf ها لیست می شوند.
تابع dbstatus: تابع dbstatus لیستی از اعداد مرتبط با خطوطی را که در آنها نقطه breakpoint در سند کد متلب مشخص شده است، تنظیم می کند. برای رفتن مستقیم به هر یک از خطوط، می توانید بر روی آن خط در ویرایشگر کلیک کنید.
توابع مخصوص debugging در نرم افزار متلب انواع مختلفی دارند که می توانید با مراجعه به help این نرم افزار با تمامی آن ها و همچنین نحوه عملکردشان در اشکال زدایی آشنا شوید.
نمایش دادن خروجی:
یکی از راه حل هاییکه برای مشخص کردن محل وقوع اشکال در فایل متلب وجود دارد، نمایش خروجی می باشد. جهت نمایش خروجی باید نقطه ویرگول از انتهای کد حذف شود. در ادیتور( ویرایشگر) متلب، خروجی از پنجره فرمان نمایش داده می شود. در لایو ادیتور، متلب خروجی را با خط کدی که آن را ایجاد کرده، نمایش خواهد داد.
مثال:
فرض کنید اسکریپتی با نام plotRand.m موجود داردی که از برداری از داده های تصادفی را ترسیم کرده و خطی افقی بر روی آن ترسیم می نماید.
;n = 50
;r = rand(n,1)
plot(r)
;m = mean(r)
hold on
plot([0,n],[m,m])
hold off
title("Mean of Random Uniform Data")
برای نمایش دادن خروجی تابع rand در خط ۲، نقطه ویرگول در پایان خط را حذف نمایید. برنامه متلب مقدار r را در پنجره فرمان (Command Window) نمایش خواهد داد. به تصویر زیر توجه نمایید.

در Live Editor یا همان ویرایشگر زنده، مقدار r را در خط ۲ در متلب نمایش داده می شود.

دیباگ یا اشکالزدایی با استفاده از Run to Here
جهت بررسی وضعیت کلیه متغیرهای موجود در یک نقطه خاص از کد، فایل کد را اجرا و پس از آن مکث نماید. جهت اجرای کد در یک خط مشخص و سپس مکث، برروی دکمه Run to Here در قسمت چپ کلیک کنید. درصورتیکه به خط منتخب نرسید، متلب به اجرای کد ادامه خواهد داد تا در انتهای فایل یا در یک نقطه متوقف شود. در کلاس ها و توابع، در یک خط مشخص میتوانید اجرا کنیدو پس از آن متلب متوقف خواهد شد، سپس مکث کنید.
در ورژن متلب قبل از R2021b:جهت اجرا به موقعیت مکان نما و مکث در زمان دیباگ گیری، به تب Editor ویرایشگر رفته و بر روی Run to Cursor کلیک نمایید.
برای نمونه: در سمت چپ خط 2 در plotRand.m ، برروی دکمه Run to Here کلیک نمایید. متلب فایل plotRand.m را از خظ 1 اجرا کرده و قبا از رسیدن به اجرای خط 2 مکث می کند.

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

