Тема: Що таке Breakpoint (точка зупинки) і все що з нею пов'язано
Так як не знайшов визначення Breakpoint-у українською мовою, вирішив перекласти наявне в англійській вікіпедії. Брак досвіду не дозволив мені зробити хороший переклад, все що мені було не ясно я позначив курсивом, тому прошу долучитись до цієї роботи і допомогти завершити переклад. Ось стаття оригіналу: http://en.wikipedia.org/wiki/Breakpoint. Ось переклад.
Breakpoint (точка зупину, точка розбиття) - це позначка місця припинення чи призупинення виконання програми, яка застосовується для відладки ПЗ. Точки зупину також називають просто паузами або точками розбиття.
Взагалі, їх використовують, щоб досліджувати сам процес виконання програми. По зупинці виконання програми програміст перевіряє середовище (регістри загального призначення, пам'ять, журнали, файли і т.п.) для того, щоб з'ясувати, чи програма працює належним чином. На практиці ТЗ визначається однією або кількома умовами.
Умови призупинення програми
Найбільш поширеним способом застосування точки розбиття є зупинення виконання програми перед місцем, визначеним програмістом. Такі точки називають заданими. Також використовуються й інші умови, такі як читання, запис або модифікація визначеного місця в пам'яті. Такі точки називають умовними, інформаційними точками зупинки, точками спостереження.
ТЗ також можуть перервати виконання програми в певний момент часу, наприклад по натисканню на клавішу і т. д.
Інструменти перевірки
По досягненню ТЗ використовуються різні інструменти для перевірки стану програми або його редагування. Для того щоб побачити які функції були потрібні щоб викликати ТЗ, необхідно трасувати стек кожного потоку виконання. Список точок спостереження (watches) дозволяє дослідити, які значення мають певні змінні і твердження. Також існують інструменти, що використовуються для відображення вмісту регістрів, завантажених модулів програми та іншої інформації.
Варіанти реалізації
Апаратними засобами
Багато процесорів забезпечують апаратну підтримку для використання точок розбиття (типово, командні та інформаційні ТЗ). Набори команд архітектури x86 процесорів забезпечують апаратну підтримку для ТЗ із x86 зневаджувальними регістрами. В деяких випадках в мікроархітектурі процесора укладається обмеження, що не дозволяє застосовувати ТЗ, які встановлені на код в командних слотах. Таке обмеження залежить від типу процесора.
Програмним забезпеченням
Без використання апаратного запезпечення, відладчики реалізувуються програмно.
Для того щоб застосувати ТЗ достатньо замінити команду в необхідному місці на одну з наведених нижче:
Команда, яка викликає зневаджувач напряму (напр. системний виклик(system call));
Неправильна команда, навмисно вставлена в місце, де необхідно зупинити програму (така, що потім буде оброблятись відладчиком);
АБО
За допомогою набору команд симулятора можливо реалізувати умовні і безумовні точки зупинки, через просте вкладення відповідних умов тестів в ході виконання нормального програмного циклу - це також закономірно дозволяє реалізувати непримусові точки зупину (наприклад тільки читання програми).
Інтерпретовані мови також можуть ефективно використовувати зазначену вище концепцію у своєму програмному циклі.
Оснащення сирцевого коду додатковими структурами коду, які породжують функції виклику внутрішніх чи зовнішніх засобів зневадження, є ще одним альтернативним варіантом. Використання цього методу призводить до зростання обсягу бінарного коду та може перешкоджати звичайному доступу до пам'яті та обробці виключень. Опція "Зневадження" ("Debug") присутня у деяких компіляторів та напів-прозоро втілює даний підхід.
Деякі налагоджувачі дозволяють модифікувати програму "на льоту" (під час паузи при виконанні програмного циклу). Зазвичай це дає можливість обійтися без повторного компілювання програми і уникнути її перезапуску. Також це дає змогу застосувати власноруч написані, тимчасові команди для проведення тестування. Деякий код часто може бути просто пропущеним для того, щоб визначити вплив такої дії на логіку програми; можна наприклад пропустити перевірку якоїсь умови, опинившись у блоці коду, який за нормальних умов ніколи не виконується. У багатьох випадках це може бути єдиним можливим засобом для тестування незрозумілих помилок, спричинених подіями підпрограми, які рідко, якщо взагалі коли-небудь, правильно виконуються - без додаткового ризику зберегти тимчасові зміни сирцевого коду.
Програмні точки зупинки використовують додаткові ресурси процесора, а тому їх використання сильно сповільняє роботу налагоджуваної програми. Однак це цілком прийнятно під час тестування. До того ж, у цьому випадку інформація зібрана налагоджувачем не обмежується форматом налагоджувальної інформації апаратного забезпечення. Наприклад, програмний налагоджувач може збирати інформацію про шлях виконання на рівні програм/підпрограм/окремих інструкцій, що може значно перевищувати можливості інспектування конкретної апаратної платформи. Також, для зменшення промахів кешу, може застосовуватися метод ємуляції набору інструкцій замість методу (повторюваної) заміни інструкцій.
Наприклад, деякі діалекти мови FORTRAN мають команду AT, яка з самого початку була створена щоб слугувати інструкцією зупинки. Python реалізує дебагер доступний з програм на Python. Такими можливостями можна (і часом так роблять) зловживати використовуючи їх як аналог команди COMEFROM.