Зворотний трекінг
Зворотне трасування - це визначення кінцевої точки події, пов’язаної з функцією (див. Нижче). Потрапивши туди, на відладчику ставиться точка розриву. Функція спрацьовує і коли відладчик зупиняється. Стек дзвінків переглядається, щоб відстежити шлях виклику. Під час підйому стека викликів ви можете робити нотатки про змінні стани або розміщувати нові точки перерви, щоб знову перевірити подію.
Функція запускається знову, і налагоджувач зупиняється на нових точках розриву. Потім ви можете повторити калькування назад або виконати трасування вперед, поки мета не буде знайдена.
Плюси мінуси
- Завжди простіше підійти до стеку викликів і побачити, як ти кудись потрапив.
- Можуть бути мільйони умов, які повинні бути справдими, перш ніж досягти кінцевої точки. Якщо ви вже знаєте кінцеву точку, ви зберегли себе багато роботи.
- Якщо функція порушена. Ви ніколи не зможете досягти кінцевої точки, і час можна витратити, намагаючись з’ясувати, чому.
Кінцева точка відкриття
Для налагодження функції ви повинні знати, де у вихідному коді досягнута кінцева мета. Тільки з цього моменту ви можете відслідковувати, щоб побачити, як код потрапив туди. Приклад; Щоб зрозуміти, як виконується скасування. Ви знаєте, де в коді речі відмінені, але ви не знаєте, як вони дістаються . Це було б кандидатом на зворотній шлях, щоб зрозуміти, як працює ця функція.
Відстеження вперед
Відстежування вперед - це місце початку події, пов’язаної з особливістю (див. Нижче). Потрапивши туди, повідомлення в журнал вставляються у вихідний код або встановлюються точки перерви. Цей процес повторюється в міру просування далі від початкової точки, поки ви не виявите мету для функції.
Плюси мінуси
- Це найпростіша відправна точка для пошуку функції.
- Складність коду знижує ефективність прямого відстеження. Чим більше умов у коді, тим більше шансів піти в неправильному напрямку.
- Відстеження вперед часто призводить до встановлення точок перерви, які будуть спровоковані непов'язаними подіями. Перервати процес налагодження та заважати вашому пошуку.
Відкриття початкової точки
Ви можете використовувати ключові слова, ідентифікатори користувальницького інтерфейсу (ідентифікатори кнопок, назви вікон) або легко знайти слухачів подій, пов’язаних із функцією. Наприклад, ви можете почати з кнопки, яка використовується для запуску функції скасування .
Процес усунення
Ви можете вважати це середньою точкою порівняно з початковою і кінцевою позиціями. Ви виконуєте процес усунення, коли вже знаєте, що фрагмент коду використовується в функції, але це не є ні початком, ні кінцем функції.
Напрямок, який ви приймаєте від середньої точки, залежить від кількості входів і виходів. Якщо фрагмент коду використовується в багатьох місцях, то відстеження назад з цієї позиції може зайняти дуже багато часу, оскільки їх потрібно перевірити. Потім ви використовуєте процес усунення, щоб зменшити цей список. Крім того, з цього моменту ви можете виконати трасування прямого напрямку , але знову ж таки, якщо фрагмент коду розгалужиться на багато місць, це також може бути проблемою.
Ви повинні зменшити вказівки щодо позиції, не дотримуючись шляхів, які явно не будуть виконані для функції. Проходячи повз цей код і розміщуючи лише точки перелому, якщо це, ймовірно, пов’язано з функцією.
Налагодження середньої точки часто вимагає більш попередніх функцій IDE. Можливість бачити ієрархію коду та залежності. Без цих інструментів важко обійтися.
Плюси мінуси
- Середні точки часто є першим кодом коду, який вискакує вам у голову, коли ви думаєте про функцію. Ви кажете собі "Ах, для роботи потрібно використовувати XXXX".
- Середні точки можуть виявити початкові точки найлегше.
- Середні точки можуть бути простим способом підняти слід до функції, коли вони втрачені синхронізацією або зміною нитки.
- Середні моменти можуть привести вас до коду, який вам не знайомий. Ви витрачаєте час, щоб дізнатися, що відбувається.