KDevelop4/Manual/Debugging programs/uk: Difference between revisions
(Created page with "Після зупинки ви можете діяти у декілька способів: наказати виконати поточний рядок (<keycap>F10</keycap>, ...") |
(Created page with "Цей список програм може бути доволі довгим, як у нашому прикладі. Ви можете дещо спростити собі ро...") |
||
Line 21: | Line 21: | ||
Іноді виникає потреба у зневаджуванні програми, яку вже запущено. Одним з випадків такої потреби є зневаджування паралельно запущених за допомогою [https://computing.llnl.gov/tutorials/mpi/ MPI] програм або зневаджування довготривалого фонового процесу. Виконати таке зневаджування можна за допомогою пункту меню <menuchoice>Виконання -> Долучити до процесу</menuchoice>, у відповідь на вибір якого буде відкрито вікно, подібне до наведеного вище. Вам потрібно вибрати програму, яка відповідає поточному відкритому проекту у '''KDevelop''' — у нашому випадку такою програмою буде step-32. | Іноді виникає потреба у зневаджуванні програми, яку вже запущено. Одним з випадків такої потреби є зневаджування паралельно запущених за допомогою [https://computing.llnl.gov/tutorials/mpi/ MPI] програм або зневаджування довготривалого фонового процесу. Виконати таке зневаджування можна за допомогою пункту меню <menuchoice>Виконання -> Долучити до процесу</menuchoice>, у відповідь на вибір якого буде відкрито вікно, подібне до наведеного вище. Вам потрібно вибрати програму, яка відповідає поточному відкритому проекту у '''KDevelop''' — у нашому випадку такою програмою буде step-32. | ||
Цей список програм може бути доволі довгим, як у нашому прикладі. Ви можете дещо спростити собі роботу за допомогою спадного списку у верхній частині вікна. Типовим пунктом цього списку є <menuchoice>Процеси користувачів</menuchoice>, тобто всі програми, запущені всіма користувачами, які працюють у системі (якщо ви працюєте за власним стаціонарним або портативним комп’ютером, ймовірно, ви є єдиним користувачем, окрім користувача root та різноманітних облікових записів служб); у списку не буде процесів користувача root. Обмежити перелік процесів можна за допомогою пункту <menuchoice>Власні процеси</menuchoice>, його вибір призведе до вилучення зі списку програм, запущених іншими користувачами. Кращим варіантом є вибір пункту <menuchoice>Лише програми</menuchoice>, — зі списку буде вилучено багато процесів, які формально запущено від вашого імені, але які ви власноруч не запускали, зокрема програма для керування вікнами, фонові завдання тощо навряд чи є достойними кандидатами для зневаджування. | |||
Після вибору процесу, долучення до нього переведе '''KDevelop''' у режим зневаджування, відкриє всі звичайні панелі зневаджування і зупинить програму на рядку, який виконувався під час долучення. На цьому етапі доцільно встановити точки зупину, точки перегляду або налаштувати інші елементи стеження за виконанням, а потім продовжити виконання програми за допомогою пункту меню <menuchoice>Виконання -> Продовжити</menuchoice>. | Після вибору процесу, долучення до нього переведе '''KDevelop''' у режим зневаджування, відкриє всі звичайні панелі зневаджування і зупинить програму на рядку, який виконувався під час долучення. На цьому етапі доцільно встановити точки зупину, точки перегляду або налаштувати інші елементи стеження за виконанням, а потім продовжити виконання програми за допомогою пункту меню <menuchoice>Виконання -> Продовжити</menuchoice>. |
Latest revision as of 10:16, 12 June 2011
Зневаджування програм у KDevelop
Запуск програми під керуванням програми для зневаджування
Після того, як запуск програми буде налаштовано (див. Запуск програм), ви зможете запускати програму під керуванням інструмента зневаджування: скористайтеся пунктом меню або натисніть клавішу F9. Якщо ви знайомі з роботою gdb, результат буде той самий, що і після запуску gdb з вказаним виконуваним файлом у налаштуваннях запуску з наступною командою Run
. Це означає, що якщо програмою буде десь викликано abort()
(наприклад, якщо оператором контролю буде виявлено помилку) або якщо буде виявлено помилку сегментування, інструмент зневаджування зупинить роботу програми. З іншого боку, якщо програма зможе виконати роботу до кінця (правильно чи неправильно), інструмент зневаджування не зупинятиме її роботу, аж доки ця робота не завершиться сама. У такому разі вам можуть знадобитися встановлені ще до запуску програми точки зупину у всіх рядках коду, де інструмент зневаджування має зупиняти роботу програми. Встановити такі точки зупину можна встановленням курсора у відповідному рядку з наступним вибором пункту меню або використанням пункту контекстного меню (викликається клацанням правою кнопкою миші) .
![](/images.userbase/thumb/1/1c/Kdevelop-4.png/550px-Kdevelop-4.png)
Запуск програми у зневаднику переведе KDevelop у інший режим: всі кнопки інструментів на периметрі головного вікна програми буде замінено на відповідні кнопки зневаджування, а не редагування. Визначити режим, у якому працює програма можна за верхньою правою частиною вікна: там ви побачите вкладки з назвами Інструменти та панелі перегляду.
, та . Натискання заголовків цих вкладок надає змогу перемикатися між трьома режимами. У кожного з режимів є власний набір інструментів, налаштувати їхній перелік можна у такий само спосіб, у який ми налаштовували інструменти режиму у розділіПісля зупинки інструмента зневаджування (у точці зупину або у точці виклику abort()
) ви зможете вивчити різноманітні дані щодо роботи програми. Наприклад, на наведеному вище зображенні нами вибрано інструмент у нижній частині (приблизний еквівалент команд "backtrace" та "info threads" у gdb), отже показано список запущених потоків виконання ліворуч (у нашому прикладі таких потоків 8) та спосіб переходу до поточної точки зупину праворуч (у нашому прикладі main()
викликано run()
; список був би довшим, якби ми зупинилися у функції, викликаній з run()
). Ліворуч можна бачити локальні змінні, зокрема поточний об’єкт (об’єкт, на який вказує змінна this
).
Після зупинки ви можете діяти у декілька способів: наказати виконати поточний рядок (F10, команда «next» gdb), увійти до функції (F11, команда «step» у gdb) або виконати інструкції до кінця функції (F12, команда «finish» gdb). На кожному з етапів виконання KDevelop оновлюватиме значення змінних, показані ліворуч. Ви також можете просто навести вказівник миші на частину коду, наприклад, назву змінної, і KDevelop покаже поточне значення та запропонує зупинити виконання програми під час наступної зміни значення змінної. Якщо ви знайомі з gdb, ви також можете натиснути кнопку інструмента у нижній частині вікна і отримати змогу вводити команди gdb безпосередньо, наприклад, для того, щоб змінити значення змінної (у поточній версії середовища, здається, не передбачено іншого способу).
Приєднання програми для зневаджування до запущеного процесу
![](/images.userbase/thumb/b/b5/Kdevelop-9.png/300px-Kdevelop-9.png)
Іноді виникає потреба у зневаджуванні програми, яку вже запущено. Одним з випадків такої потреби є зневаджування паралельно запущених за допомогою MPI програм або зневаджування довготривалого фонового процесу. Виконати таке зневаджування можна за допомогою пункту меню , у відповідь на вибір якого буде відкрито вікно, подібне до наведеного вище. Вам потрібно вибрати програму, яка відповідає поточному відкритому проекту у KDevelop — у нашому випадку такою програмою буде step-32.
Цей список програм може бути доволі довгим, як у нашому прикладі. Ви можете дещо спростити собі роботу за допомогою спадного списку у верхній частині вікна. Типовим пунктом цього списку є
, тобто всі програми, запущені всіма користувачами, які працюють у системі (якщо ви працюєте за власним стаціонарним або портативним комп’ютером, ймовірно, ви є єдиним користувачем, окрім користувача root та різноманітних облікових записів служб); у списку не буде процесів користувача root. Обмежити перелік процесів можна за допомогою пункту , його вибір призведе до вилучення зі списку програм, запущених іншими користувачами. Кращим варіантом є вибір пункту , — зі списку буде вилучено багато процесів, які формально запущено від вашого імені, але які ви власноруч не запускали, зокрема програма для керування вікнами, фонові завдання тощо навряд чи є достойними кандидатами для зневаджування.Після вибору процесу, долучення до нього переведе KDevelop у режим зневаджування, відкриє всі звичайні панелі зневаджування і зупинить програму на рядку, який виконувався під час долучення. На цьому етапі доцільно встановити точки зупину, точки перегляду або налаштувати інші елементи стеження за виконанням, а потім продовжити виконання програми за допомогою пункту меню
.Деякі корисні клавіатурні скорочення
Зневаджування | |
---|---|
F10 | Перейти до наступної інструкції ("next" у gdb) |
F11 | Увійти у наступну інструкцію ("step" у gdb) |
F12 | Вийти з інструкції ("finish" у gdb) |