نقطه توقف

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

شرط‌های نقطه توقف

نقطه توقف معمولاً برای قطع یک برنامه در حال اجرا بلافاصله قبل از اجرای یک دستورالعمل مشخص شده توسط برنامه‌نویس، مورد استفاده قرار می‌گیرد. به این اغلب یک نقطه توقف دستورالعمل گفته می‌شود.
دیگر انواع شرط‌ها نیز می‌تواند استفاده شوند، مانند خواندن، نوشتن یا اصلاح یک مکان خاص در یک منطقه از حافظه؛ که به این اغلب یک نقطه توقف مشروط، یک نقطه توقف داده یا نقطه مراقبت گفته می شود.
نقطه توقف همچنین می‌تواند برای توقف اجرا در یک زمان خاص، پس از یک ضربه زدن به کلید و غیره استفاده شود.

ابزار بازرسی

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

سخت‌افزاری

بسیاری از پردازنده‌ها شامل پشتیبانی سخت‌افزاری برای نقاط توقف هستند (نوعاً نقاط توقف دستورالعمل و داده). به عنوان مثال، معماری مجموعه دستورالعملx86 با رجیستریهای اشکال زدایی ایکس ۸۶ خود، پشتیبانی سخت‌افزاری را برای نقاط توقف ارائه می‌دهد. چنین سخت‌افزاری ممکن است شامل محدودیت‌هایی باشد، به عنوان مثال اجازه نمی‌دهد نقاط توقف روی تکه‌های تأخیر پرش قرار گیرند. این نوع محدودیت توسط ریز معماری پردازنده اعمال می‌شود و از پردازنده به پردازنده متفاوت است.

تاریخچه

اختراع نقاط توقف توسط برنامه‌نویس بتی هالبرتن، برای انیاک، یکی از اولین رایانه‌های دیجیتال، اختراع شد.
نقاط توقف دستگاه بزرگ رایانه‌های اولیه، مانند IBM / 360، دارای سوئیچ/مودم‌های کنسول بودند که به اجازه می‌دادند نقاط توقف در آدرس‌های ذخیره‌سازی دستور خاصی قرار بگیرد و عملیات تک چرخه را ارائه می‌دادند، به این ترتیب محتویات ثبات‌ها و حافظه به‌طور مستقیم بر روی چراغ‌های کنسول مشاهده شد. ظهور چند وظیفه ای استفاده از این گزینه را محدود کرد، زیرا کل دستگاه متوقف می‌شد.
نقاط توقف غیر تعاملی برنامه نویسان از همان روزهای اولیهٔ رایانه‌ها از تکه کدهای ماشین استفاده کرده‌اند تا نقاط توقف تک مخرب را پیاده‌سازی کنند که یک روگرفت حافظه ایجاد کنند. روگرفت امکان مشاهده حالت ثبات‌ها و حافظه را دقیقاً در لحظه «شکستگی» عمدی فراهم می‌کرد.
نقاط توقف تعاملی ظهور کنسول‌های تله پرینتر در دهه ۱۹۶۰ میلادی امکان تعاملی تر شدن قابلیت اشکال زدایی خط فرمان را فراهم کرد، و در اوایل 1970s با ورود فراگیر دستگاه‌های نمایش متصل به بزرگ رایانه‌ها، شکال زدایی کامل روی صفحه نمایش در محیط‌های چند وظیفه ای به صورت کاملاً تعاملی، به واقعیت تبدیل شد. این اتفاق همچنین اجازه اجرای گام به گام یک برنامه را می‌دهد به طوری که مانند یک پویایی برنامه عمل می‌کند و در حالی که ثبات‌های دلخواه و جابه جایی‌های حافظه همزمان نشان داده شده‌اند. در ابتدا این نوع انیمیشن در سطح کد ماشین دیس اسمبلر یا دی کامپایل شده بود، اما بعداً تا پویایی در سطح منبع HLL پیشرفت کرد.