1 Востаннє редагувалося Ярослав (07.12.2012 16:00:13)

Тема: Що таке Breakpoint (точка зупинки) і все що з нею пов'язано

Так як не знайшов визначення Breakpoint-у українською мовою, вирішив перекласти наявне в англійській вікіпедії. Брак досвіду не дозволив мені зробити хороший переклад, все що мені було не ясно я позначив курсивом, тому прошу долучитись до цієї роботи і допомогти завершити переклад. Ось стаття оригіналу: http://en.wikipedia.org/wiki/Breakpoint. Ось переклад.

    Breakpoint (точка зупину, точка розбиття) - це позначка місця припинення чи призупинення виконання програми, яка застосовується для відладки ПЗ. Точки зупину також називають просто паузами або точками розбиття.

    Взагалі, їх використовують, щоб досліджувати сам процес виконання програми. По зупинці виконання програми програміст перевіряє середовище (регістри загального призначення, пам'ять, журнали, файли і т.п.) для того, щоб з'ясувати, чи програма працює належним чином. На практиці ТЗ визначається однією або кількома умовами.

Умови призупинення програми

    Найбільш поширеним способом застосування точки розбиття є зупинення виконання програми перед місцем, визначеним програмістом. Такі точки називають заданими. Також використовуються й інші умови, такі як читання, запис або модифікація визначеного місця в пам'яті. Такі точки називають умовними, інформаційними точками зупинки, точками спостереження.
ТЗ також можуть перервати виконання програми в певний момент часу, наприклад по натисканню на клавішу і т. д.

Інструменти перевірки

    По досягненню ТЗ використовуються різні інструменти для перевірки стану програми або його редагування. Для того щоб побачити які функції були потрібні щоб викликати ТЗ, необхідно трасувати стек кожного потоку виконання. Список точок спостереження (watches) дозволяє дослідити, які значення мають певні змінні і твердження. Також існують інструменти, що використовуються для відображення вмісту регістрів, завантажених модулів програми та іншої інформації.

Варіанти реалізації

Апаратними засобами

    Багато процесорів забезпечують апаратну підтримку для використання точок розбиття (типово, командні та інформаційні ТЗ). Набори команд архітектури x86 процесорів забезпечують апаратну підтримку для ТЗ із x86 зневаджувальними регістрами. В деяких випадках в мікроархітектурі процесора укладається обмеження, що не дозволяє застосовувати ТЗ, які встановлені на код в командних слотах. Таке обмеження залежить від типу процесора.

Програмним забезпеченням

    Без використання апаратного запезпечення, відладчики реалізувуються програмно.
Для того щоб застосувати ТЗ достатньо замінити команду в необхідному місці на одну з наведених нижче:

  • Команда, яка викликає зневаджувач напряму (напр. системний виклик(system call));

  • Неправильна команда, навмисно вставлена в місце, де необхідно зупинити програму (така, що потім буде оброблятись відладчиком);

АБО

  • За допомогою набору команд симулятора можливо реалізувати умовні і безумовні точки зупинки, через просте вкладення відповідних умов тестів в ході виконання нормального програмного циклу - це також закономірно дозволяє реалізувати непримусові точки зупину (наприклад тільки читання програми).

  • Інтерпретовані мови також можуть ефективно використовувати зазначену вище концепцію у своєму програмному циклі.

  • Оснащення сирцевого коду додатковими структурами коду, які породжують функції виклику внутрішніх чи зовнішніх засобів зневадження, є ще одним альтернативним варіантом. Використання цього методу призводить до зростання обсягу бінарного коду та може перешкоджати звичайному доступу до пам'яті та обробці виключень. Опція "Зневадження" ("Debug") присутня у деяких компіляторів та напів-прозоро втілює даний підхід.

    Деякі налагоджувачі дозволяють модифікувати програму "на льоту" (під час паузи при виконанні програмного циклу). Зазвичай це дає можливість обійтися без повторного компілювання програми і уникнути її перезапуску. Також це дає змогу застосувати власноруч написані, тимчасові команди для проведення тестування. Деякий код часто може бути просто пропущеним для того, щоб визначити вплив такої дії на логіку програми; можна наприклад пропустити перевірку якоїсь умови, опинившись у блоці коду, який за нормальних умов ніколи не виконується. У багатьох випадках це може бути єдиним можливим засобом для тестування незрозумілих помилок, спричинених подіями підпрограми, які рідко, якщо взагалі коли-небудь, правильно виконуються - без додаткового ризику зберегти тимчасові зміни сирцевого коду.

    Програмні точки зупинки використовують додаткові ресурси процесора, а тому їх використання сильно сповільняє роботу налагоджуваної програми. Однак це цілком прийнятно під час тестування. До того ж, у цьому випадку інформація зібрана налагоджувачем не обмежується форматом налагоджувальної інформації апаратного забезпечення. Наприклад, програмний налагоджувач може збирати інформацію про шлях виконання на рівні програм/підпрограм/окремих інструкцій, що може значно перевищувати можливості інспектування конкретної апаратної платформи. Також, для зменшення промахів кешу, може застосовуватися метод ємуляції набору інструкцій замість методу (повторюваної) заміни інструкцій.

    Наприклад, деякі діалекти мови FORTRAN мають команду AT, яка з самого початку була створена щоб слугувати інструкцією зупинки. Python реалізує дебагер доступний з програм на Python. Такими можливостями можна (і часом так роблять) зловживати використовуючи їх як аналог команди COMEFROM.

2

Re: Що таке Breakpoint (точка зупинки) і все що з нею пов'язано

keithfay написав:

Наприклад, деякі FORTRAN діалекти мають AT твердження, в якму спочатку був призначений в якості інструкції точка зупину. Реалізації Python відладчика доступні з програми Python. Ці засоби можуть бути і  зловживаються діяти як COMEFROM твердження.

Наприклад, деякі діалекти мови FORTRAN мають команду AT, яка з самого початку була створена щоб слугувати інструкцією зупинки. Python реалізує дебагер доступний з програм на Python. Такими можливостями можна (і часом так роблять) зловживати використовуючи їх як аналог команди COMEFROM.

3

Re: Що таке Breakpoint (точка зупинки) і все що з нею пов'язано

Мабуть більш доцільно було б розмістити матеріал в українській вікіпедії.

Подякували: HetmanNet1

4

Re: Що таке Breakpoint (точка зупинки) і все що з нею пов'язано

Закінчимо переклад і розмістимо там.

5

Re: Що таке Breakpoint (точка зупинки) і все що з нею пов'язано

Щодо

an instruction set simulator can implement unconditional or conditional breakpoints, by simply embedding the appropriate condition tests within its own normal program cycle - that also naturally allows non-invasive breakpoints (on read-only programs for instance).[1]

Пропоную такі варіанти:
1) Симулятор набору команд може реалізовувати ТЗ, що не містять умов, а також умовні ТЗ, завдяки застосуванню відповідних тестів стану програми, що будуть виконуватись під час виконання програмного циклу - це також дає змогу використовувати необов'язкові ТЗ (наприклад, програм призначених тільки для читання).
2) ТЗ можна реалізувати симуляцією набору команд. Так можна створити брейкпоінти що не містять умов, а також умовні ТЗ; цей метод можна використати завдяки застосуванню відповідних тестів стану програми, що будуть задіяні під час виконання програмного циклу. Це також дасть змогу використовувати необов'язкові ТЗ (наприклад, для програм призначених тільки для читання).

6

Re: Що таке Breakpoint (точка зупинки) і все що з нею пов'язано

Breakpoint українською варто перекладати, як точки зупину чи розбиття. Мова перестає вважатися мовою, якщо вживання запозичиних термінів і слів перевищує кількість власного походження, тож не ховайте українську мову, а розвивайте - перекладайте назви також. Є виключення коли не можна перекласти, але не в данному випадку, тай не варто на це завжди списувати :)

7 Востаннє редагувалося HetmanNet (20.11.2012 21:37:42)

Re: Що таке Breakpoint (точка зупинки) і все що з нею пов'язано

keithfay написав:

Щодо

an instruction set simulator can implement unconditional or conditional breakpoints, by simply embedding the appropriate condition tests within its own normal program cycle - that also naturally allows non-invasive breakpoints (on read-only programs for instance).[1]

Пропоную такі варіанти:
1) Симулятор набору команд може реалізовувати ТЗ, що не містять умов, а також умовні ТЗ, завдяки застосуванню відповідних тестів стану програми, що будуть виконуватись під час виконання програмного циклу - це також дає змогу використовувати необов'язкові ТЗ (наприклад, програм призначених тільки для читання).
2) ТЗ можна реалізувати симуляцією набору команд. Так можна створити брейкпоінти що не містять умов, а також умовні ТЗ; цей метод можна використати завдяки застосуванню відповідних тестів стану програми, що будуть задіяні під час виконання програмного циклу. Це також дасть змогу використовувати необов'язкові ТЗ (наприклад, для програм призначених тільки для читання).

Не зовсім дослівно, швидше літературний переклад, аніж дослівний:

За допомогою набору команд симулятора можливо реалізувати умовні і безумовні точки зупинки, через просте вкладення відповідних умов тестів в ході виконання нормального програмного циклу - це також закономірно дозволяє реалізувати непримусові точки зупину (наприклад тільки читання програми).

(Слова доданні для зв'язності виділенні курсивом)

8

Re: Що таке Breakpoint (точка зупинки) і все що з нею пов'язано

Трохи оновив тему
Зеленим кольором позначив місця де просто потрібно обрати певний варіант.
Червоним місця де важко зрозуміти суть, прошу долучатись до перекладу.

9

Re: Що таке Breakpoint (точка зупинки) і все що з нею пов'язано

Взагалі, їх використовують, щоб досліджувати сам процес виконання програми. По зупинці виконання програми програміст перевіряє середовище (регістри загального призначення, пам'ять, журнали, файли і т.п.) для того, щоб з'ясувати, чи програма працює належним чином. На практиці ТЗ визначається однією або кількома умовами.

Також використовуються й інші умови, такі як читання, запис або модифікація визначеного місця в пам'яті. Такі точки називають умовними, інформаційними точками зупинки, точками спостереження.

10 Востаннє редагувалося Ярослав (29.11.2012 16:50:27)

Re: Що таке Breakpoint (точка зупинки) і все що з нею пов'язано

- Interpreted languages can effectively use the same concept as above in their program cycle.
- "Instrumenting" all the source code with additional source statements that issue a function that invoke an internal or external debug subroutine, is yet another common approach. This method increases the binary size and might adversely affect normal memory allocation and exception handlers. "Debug" options exist on some compilers to implement this technique semi-transparently.

1) Літературний
- Інтерпретовані мови можуть вдало використовувати в своєму програмному циклі концепцію наведену вище.
- Вихідний код може бути оснащений додатковими вихідними твердженнями. Це призведе до спрацювання функції, котра викличе зовнішню чи внутрішню підпрограму. Такий метод збільшує розмір бінарного коду і може негативно позначитися на нормальному розподілі пам'яті і обробці винятків. Деякі компілятори мають такі опції в складі свого відладчика, їх використання дозволить вам застосувати цей метод в напів-прозорий спосіб.
2) Дослівний
- Інтерпретовані мови можуть ефективно використовувати такий же підхід, який показаний вище, в своєму програмному циклі.
- Оснащення всього вихідного коду додатковими вихідними твердженнями, що спричинить виклик функції, яка задіє зовнішні або внітрішні підпрограми, - це іще один підхід. Такий метод збільшує розмір бінарного коду і може несприятливо позначитись на нормальному розподілення пам'яті і на опрацюванні винятків. "Відладочні" опції, присутні в деяких компіляторах, дозволять вам застосувати цей метод напів-прозоро.

Обираємо варіант, перекладаємо, вносимо пропозиції щодо перекладу.

11

Re: Що таке Breakpoint (точка зупинки) і все що з нею пов'язано

Bartash написав:

- Interpreted languages can effectively use the same concept as above in their program cycle.
- "Instrumenting" all the source code with additional source statements that issue a function that invoke an internal or external debug subroutine, is yet another common approach. This method increases the binary size and might adversely affect normal memory allocation and exception handlers. "Debug" options exist on some compilers to implement this technique semi-transparently.

Пропоную щось на зразок такого:

- Інтерпретовані мови також можуть ефективно використовувати зазначену вище концепцію у своєму програмному циклі.

- Оснащення сирцевого коду додатковими структурами коду, які породжують функції виклику внутрішніх чи зовнішніх засобів зневадження, є іншим альтернативним варіантом. Використання цього методу призводить до зростання обсягу бінарного коду та може перешкоджати звичайному доступу до пам'яті та обробці виключень. Опція "Debug" ("Зневадження") присутня у деяких компіляторів та напів-прозоро втілює даний підхід.

З.І: термінологія програмування українською і справді потребує розвитку, бо дане поле перенасичене русизмами та англійським сленгом.

Краще писати україномовні назви, а в дужках англомовні.
Як на мене, краще просто "є ще одним альтернативним варіантом", а не "є іншим альтернативним варіантом"

- Оснащення сирцевого коду додатковими структурами коду, які породжують функції виклику внутрішніх чи зовнішніх засобів зневадження, є ще одним альтернативним варіантом. Використання цього методу призводить до зростання обсягу бінарного коду та може перешкоджати звичайному доступу до пам'яті та обробці виключень. Опція "Зневадження" ("Debug") присутня у деяких компіляторів та напів-прозоро втілює даний підхід.

12 Востаннє редагувалося Ярослав (01.12.2012 12:50:24)

Re: Що таке Breakpoint (точка зупинки) і все що з нею пов'язано

Some debuggers allow program variables in memory to be modified before resuming, effectively allowing the introduction of "hand-coded" temporary assignments for test purposes. Similarly, program instructions can often be skipped to determine the effect of changes to the program logic - enabling questions about program execution to be answered in a direct way (i.e. without assumptions or guesswork). In many cases it may be the only practical method of testing obscure "event-driven" error subroutines that rarely, if ever, get executed - without the added risk of leaving temporary source changes.

Деякі відладчики дозволяють модифікацію програмних змінних в пам'яті під час паузи при виконанні програмного циклу, це дуже гарна можливість для застосування власноруч написаних тимчасових завдань для проведення тестів. Програмні команди часто можуть просто бути пропущені для визначення впливу такої операції на логіку програми - введення питань, щодо виконання програми, які мають отримати пряму відповідь (без здогадів або припущень). У багатьох випадках це може бути єдиним дієвим методом тестування незрозумілих помилок, спричинених подіями підпрограми, які рідко, якщо взагалі коли-небудь, правильно виконуються - без додаткового ризику зберегти тимчасові зміни сирцевого коду.

13

Re: Що таке Breakpoint (точка зупинки) і все що з нею пов'язано

Давайте щось щодо приведеного мною вище абзацу і доб'ємо вже цей переклад.

14 Востаннє редагувалося Torbins (04.12.2012 21:23:12)

Re: Що таке Breakpoint (точка зупинки) і все що з нею пов'язано

Про модифікацію змінних у пам’яті усе просто: п’ять секунд роботи з налагоджувачем позбавляють від необхідності перекомпілювати та перезапускати програму.
Можливість на ходу змінювати порядок виконання операторів це також дуже зручно. Можна наприклад пропустити перевірку якоїсь умови, опинившись у блоці коду, який за нормальних умов ніколи не виконується.
Щоправда це все більше про налагоджувач взагалі а не про конкретно брейкпойнти.

15 Востаннє редагувалося Ярослав (05.12.2012 22:03:15)

Re: Що таке Breakpoint (точка зупинки) і все що з нею пов'язано

Some debuggers allow program variables in memory to be modified before resuming, effectively allowing the introduction of "hand-coded" temporary assignments for test purposes. Similarly, program instructions can often be skipped to determine the effect of changes to the program logic - enabling questions about program execution to be answered in a direct way (i.e. without assumptions or guesswork). In many cases it may be the only practical method of testing obscure "event-driven" error subroutines that rarely, if ever, get executed - without the added risk of leaving temporary source changes.

Деякі налагоджувачі дозволяють модифікувати програму "на льоту" (під час паузи при виконанні програмного циклу). Зазвичай це дає можливість обійтися без повторного компілювання програми і уникнути її перезапуску. Також це дає змогу застосувати власноруч написані, тимчасові команди для проведення тестування. Деякий код часто може бути просто пропущеним для того, щоб визначити вплив такої дії на логіку програми; можна наприклад пропустити перевірку якоїсь умови, опинившись у блоці коду, який за нормальних умов ніколи не виконується. У багатьох випадках це може бути єдиним можливим засобом для тестування незрозумілих помилок, спричинених подіями підпрограми, які рідко, якщо взагалі коли-небудь, правильно виконуються - без додаткового ризику зберегти тимчасові зміни сирцевого коду.

Так підійде?

16

Re: Що таке Breakpoint (точка зупинки) і все що з нею пов'язано

Цілком.

17 Востаннє редагувалося Ярослав (06.12.2012 18:02:03)

Re: Що таке Breakpoint (точка зупинки) і все що з нею пов'язано

І останній абзац:

Implementing data breakpoints in software however, can greatly reduce the performance of the application being debugged - since it is using additional resources on the same processor. However, this is normally acceptable during testing and the amount of information available from the debugger is not restricted by limitations of debug data known to the hardware. For instance, a software implementation can collect logical path data at program/subroutine/instruction level to considerably augment what might be stored by the particular hardware platform for inspection. The instruction set simulation method considerably reduces the compared to the (repeated) instruction replacement method, also reducing cache misses.

Між іншим, реалізація інформаційних точок розбиття за допомогою ПЗ може спричинити значно більші витрати часу на налагодження програми в тому випадку, якщо ці дві операції (налагодження і ТЗ) будуть використовувати ресурс одного і того ж процесору. Однак, це допустимо під час тестування, якщо кількість інформації, що доступна із налагоджувача не обмежена даними налагоджування, що містяться в апаратній частині. Наприклад можна застосувати операцію для збирання логічних дані на рівні "програма/підпрограма/команда" (program/subroutine/instruction) для того, щоб збільшити розмір виділеної апаратної пам'яті, призначеної для налагодження програми. Метод використання симулятора набору команд дозволяє в більшій мірі зменшити втрати кешу, аніж повторне застосування методу перестановки команд, який здійснює той самий ефект.

Все. Це останній абзац. По його суті не все зрозуміло так що наголошуйте де я в змісті допустив помилку. Сьогодні на завтра я повиправляю помилки в тексті першого повідомлення прослідкую за граматикою і можна буде додати статтю в вікі. Думаю завтра, якщо хтось сьогодні відпише з приводу цього абзацу, стаття уже буде в вікі. А посилання на джерело буде гордо вказувати на цю тему. Ну і на оригінальну статтю. :)

18

Re: Що таке Breakpoint (точка зупинки) і все що з нею пов'язано

Схоже цей абзац кілька разів правили, і якось не дуже вдало.
Спочатку йдеться про те, що точки зупинки, що вішаються на змінні, знижують швидкість роботи програми. Але під час тестування та зневадження це цілком прийнятно. Далі йдеться про те,що сам дебагер також додає тормозів, але це також не страшно,бо разом з тим він надає програмісту багато корисної інформації. Далі порівняння знаваджувальних можливостей заліза та програмного зневаджувача. Навіть і не знаю із чим це пов'язано, мабуть із програмуванням якихось мікроконтролерів. Ну й останнє речення про кеш та симуляцію теж десь із цієї опери. Думаю більшу частину цього обзацу можна викинути, щоб не плутатися самому і не плутати читачів.

19 Востаннє редагувалося Ярослав (06.12.2012 22:59:10)

Re: Що таке Breakpoint (точка зупинки) і все що з нею пов'язано

Ось як зробимо:
Про що варто пам'ятати:

  • Реалізація інформаційних точок розбиття за допомогою ПЗ може вплинути на продуктивність ПК в тому випадку, якщо операція налагодження і точка розбиття будуть використовувати ресурси одного і того ж процесору.

  • Таке додаткове навантаження допустимо під час процесу тестування, якщо при цьому не відбувається конфлікту між даними налагоджувача в програмній частині і апаратній частині.

  • Можна застосувати операцію для збирання логічних дані на рівні "програма/підпрограма/команда" (program/subroutine/instruction) для того, щоб збільшити розмір виділеної апаратної пам'яті, призначеної для налагодження програми.

  • Для того щоб уникнути втрат кешу можна використати симулятор набору команд або декілька раз застосувати метод перестановки команд, але перший варіант зазвичай ліпший.

Прокоментуйте щодо червоного і все.

20

Re: Що таке Breakpoint (точка зупинки) і все що з нею пов'язано

Щось я зовсім не впевнений, чи усе вірно зрозумів. Я б або викинув цей абзац взагалі, або написав якось так:
Програмні точки зупинки використовують додаткові ресурси процесора, а тому їх використання сильно сповільняє роботу налагоджуваної програми. Однак це цілком прийнятно під час тестування. До того ж, у цьому випадку інформація зібрана налагоджувачем не обмежується форматом налагоджувальної інформації апаратного забезпечення. Наприклад, програмний налагоджувач може збирати інформацію про шлях виконання на рівні програм/підпрограм/окремих інструкцій, що може значно перевищувати можливості інспектування конкретної апаратної платформи. Також, для зменшення промахів кешу, може застосовуватися метод ємуляції набору інструкцій замість методу (повторюваної) заміни інструкцій.