Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KL-LAB8(9).doc
Скачиваний:
18
Добавлен:
12.02.2016
Размер:
1.6 Mб
Скачать

2.4 Техніка налагодження (зневаджування) програм

Оскільки помилки в програмі найчастіше є результатом не правильних припущень програміста, то перше що потрібно зробити для виявлення помилок, це перевірити ці припущення.Потрібно локалізувати проблему додавши print твердження до програми, для перегляду значень важливих змінних та для індикації виконання програми.

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

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

ВPython реалізовано зневаджувач програм ( debugger ) який дозволяє відслідковувати виконання програм, контролювати значення змінних, встановлювати місця зупинки (контрольні точки) виконання програми( breakpoints), та покроково виконувати фрагменти програм. Застосувати зневаджувач для своєї програми (mymodule) та її функцій можна наступними чином:

 

>>> import pdb

>>> import mymodule

>>> pdb.run('mymodule.myfunction()')

В результаті, на екрані буде відображене запрошення (Pdb) , для вводу інструкцій для зневаджувача. Ввівшиhelp можна переглянути повний список команд. Введенняstep (або коротко s) приведе до виконання поточного рядка програми і її виконання зупиниться. Якщо в цьому рядку є виклик функції то ця функція буде викликана, а її виконання зупиниться на першому рядку. Введенняnext (n) приводить до подібного результату, але виконання зупиниться на наступному рядку поточної функції. Команда break ( b) використовується для створення або перегляду контрольних точок. Команда continue ( c) дозволяє продовжити виконання програми до наступної контрольної точки. Введення імені змінної дозволяє переглянути її значення.

Розглянемо приклад використання зневаджувача Python для виявлення проблем в функції find_words(). Проблеми виникали при другому виклику функції. Спочатку функція викликається без використання зневаджувача #1, і з мінімальним набором вхідних даних. При наступному виклику використовуємо зневаджувач #2.

 

>>> import pdb

>>> find_words(['cat'], 3) #1

['cat']

>>> pdb.run("find_words(['dog'], 3)") #2

> <string>(1)<module>()

(Pdb) step

--Call--

> <stdin>(1)find_words()

(Pdb) args

text = ['dog']

wordlength = 3

result = ['cat']

Потрібно використати тільки дві команди зневаджувача: step для початку виконання функції (ввійти у функцію), та args для перегляду значень її аргументів (або параметрів). Відразу зрозуміло , що зміннаresult має початкове значення ['cat'], і це не є пустий список, як очікувалося. Зневаджувач допоміг локалізувати проблему та поглибив розуміння функцій вPython.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]