بایگانی برچسب‌ها : debugging

نقطه وقفه Breakpoint

نقطه وقفه یا Breakpoint چیست؟

نقطه وقفه یا نقطه انفصال (Breakpoint) به مکان توقف یا مکث عمدی در سورس کد یک برنامه گفته می‌شود. از وقفه‌های حاصل از این نوع نقاط به منظور اشکال زدایی برنامه در آن مکان استفاده می‌شود.

در واقع نقاط وقفه ابزاری هستند که به توسعه دهنده کمک می‌کنند تا در یک لحظه‌ی خاص یا هنگام رسیدن به یک دستور معین، اطلاعات مورد نیاز نسبت به وضعیت برنامه را به دست آورد، مقدار متغیرها را بررسی کرده، در صورت لزوم تغییرات مورد نیاز را اعمال نموده و اجرای برنامه را از همان نقطه ادامه دهد (البته این اجرای پس از وقفه علاوه بر نوع تغییرات به ویژگی‌های اشکال‌زدا (Debugger) نیز بستگی دارد اما در اکثر اشکال‌زداهای امروزی از این قابلیت پشتیبانی می‌شود). معمولا برای پیاده‌سازی نقاط انفصال به صورت نرم‌افزاری، دستوری در نقطه متناظر قرار داده می‌شود که اشکال زدا را فراخوانی می‌کند. در مدل دیگر، یک دستور نامعتبر در مکان مربوطه قرار می‌گیرد که منجر به بروز وقفه‌ای عمدی در اجرای برنامه می‌شود و طبیعتا اشکال زدا مدیریت آن را برعهده خواهد گرفت.

معمولا از نقاط انفصال برای توقف اجرای برنامه، درست پیش از رسیدن به یک دستور (Instruction) معین استفاده می‌شود. به این نوع نقاط وقفه Instruction Breakpoint (نقطه وقفه دستوری) گفته می‌شود. نوع دیگری از نقاط وقفه نیز وجود دارد که تنها در صورت برآورده شدن یک شرط (صحت یک عبارت)، اجرای برنامه را متوقف می‌کنند. این نوع نقاط وقفه را Conditional Breakpoint (نقطه وقفه شرطی) می‌نامند.

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

نقطه وقفه Breakpoint
نمونه‌ای از نقاط وقفه (Breakpoint) در دیباگر ویژوال استادیو که به خط ششم اشاره می‌کند. به رنگ متمایز این خط و دایره توپری که در نوار سمت چپ این خط قرار گرفته است توجه کنید.

پیوندهای پیشنهادی تک دیک

لینک واژه در ویکیپدیا

اشکال زدا Debugger

اشکال زدا یا Debugger چیست؟

اشکال زدا یا دیباگر (Debugger) یک نرم‌افزار رایانه‌ای است که به منظور تست و اشکال زدایی نرم‌افزارهای دیگر مورد استفاده قرار می‌گیرد.

با کمک این ابزار، توسعه دهنده می‌تواند یک برنامه را گام به گام (Step by Step) اجرا نماید و یا با کمک نقاط وقفه (breakpoint) یا هنگام وقوع رخدادی معین، اجرای برنامه را متوقف نموده و وضعیت کنونی متغیرها را مورد بررسی و پایش قرار دهد. علاوه بر این بسیاری از دیباگرها حین اجرای برنامه امکان تغییر وضعیت برنامه، مقدار متغیرها و حتی تغییر مکان کنونی اجرا را فراهم می‌آورند و در اغلب اوقات می‌توانند سیر طبیعی اجرا را با تغییرات اعمال شده ادامه دهند بدون آنکه نیازی به خروج از دیباگر یا اجرای مجدد برنامه وجود داشته باشد.

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

Microsoft Visual Studio Debugger از اشکال زداهای رایج و قدرتمندی است که به صورت پیش‌فرض همراه با مایکروسافت ویژوال استادیو قابل استفاده می‌باشد. در نسخه‌های جدید این اشکال زدا، افزون بر قابلیت‌های معمول، امکان اشکال زدایی از راه دور و ایجاد نقاط وقفه پیشرفته (مانند نقاط وقفه شرطی) فراهم شده است. لازم به ذکر است کارشناسی که فرایند اشکال زدایی یک نرم‌افزار رایانه‌ای را بر عهده دارد نیز Debugger نامیده می‌شود.

اشکال زدایی Debugging

اشکال زدایی یا Debugging چیست؟

اشکال زدایی یا عیب زدایی (Debugging) در دانش تخصصی رایانه به فرایندی گفته می‌شود که طی آن باگ‌ها (یا عیوبی) که مانع از عملکرد صحیح یک نرم‌افزار رایانه‌ای یا سیستم می‌شوند را شناسایی کرده و درصدد برطرف کردن آن برمی‌آیند.

اشکال‌زدایی در واقع یکی از مراحل فرایند توسعه‌ی نرم‌افزار (Software Development) به شمار می‌رود و می‌تواند شامل برطرف کردن خطاهای ساده تا نظارت روی عملکرد سیستم، بررسی وضعیت مموری هنگام بروز یک خطا و … شود.

توسعه دهندگان به منظور یافتن و رفع آسانتر این اشکالات معمولا از ابزارهای نرم‌افزاری خاصی به نام اشکال زدا (Debugger) استفاده می‌کنند. نظارت روی نحوه اجرای برنامه، توقف و ادامه اجرای آن، ایجاد نقاط وقفه، پایش مقادیر متغیرها و حتی در بسیاری از موارد امکان تغییر مقدار آن‌ها حین اجرای برنامه و … از جمله قابلیت‌هایی است که در محیط‌های اشکال زدایی به کمک توسعه دهندگان نرم‌افزارها می‌آید. علاوه بر این اکثر زبان‌های برنامه‌نویسی سطح بالای امروزی، با فراهم آوردن ساختارهایی برای شناسایی حالات استثنایی، موجب ساده‌تر شدن فرایند اشکال‌زدایی و تشخیص نقاط اصلی در بروز رفتارهای نامناسب برنامه‌ها شده‌اند.

برای یافتن عیوب یک نرم افزار، علاوه بر روش تعاملی (Interactive Debugging) که با استفاده از اغلب Debugger ها قابل انجام است روش‌های رایج دیگری از جمله اشکال زدایی مبتنی بر دستورات Print (یا Print Debugging) نیز وجود دارد که با کمک مقادیر ثبت شده، توسعه دهنده را از سیر اجرای برنامه با خبر می‌سازد. اشکال زدایی از راه دور (یا Remote Debugging که در آن نرم‌افزاری که قرار است مورد اشکال‌زدایی واقع شود روی سیستمی غیر از سیستم اشکال زدا قرار دارد) و همچنین اشکال زدایی پس از وقوع مشکل (یا Post-mortem Debugging که از طریق روش‌های ردیابی و تحلیل وضعیت حافظه هنگام وقوع مشکل میسر می‌شود) از دیگر روش‌های دیباگینگ به شمار می‌روند. گفتنی است برای اشکال زدایی سخت‌افزارها نیز ابزارهای مخصوص و متنوعی طراحی شده است.