KDevelop4/Manual/Debugging programs/uk: Difference between revisions
Created page with "Після вибору процесу, долучення до нього переведе '''KDevelop''' у режим зневаджування, відкриє всі зви..." |
Created page with "Цей список програм може бути доволі довгим, як у нашому прикладі. Ви можете дещо спростити собі ро..." |
||
(7 intermediate revisions by 2 users not shown) | |||
Line 5: | Line 5: | ||
=== Запуск програми під керуванням програми для зневаджування === | === Запуск програми під керуванням програми для зневаджування === | ||
Після того, як запуск програми буде налаштовано (див. [[Special:myLanguage/KDevelop4/Manual/Running programs|Запуск програм]]), ви зможете запускати програму під керуванням інструмента зневаджування: скористайтеся пунктом меню <menuchoice>Виконання -> Зневаджувальний запуск</menuchoice> або натисніть клавішу <keycap>F9</keycap>. Якщо ви знайомі з роботою '''gdb''', результат буде той самий, що і після запуску '''gdb''' з вказаним виконуваним файлом у налаштуваннях запуску з наступною командою <code>Run</code>. Це означає, що якщо програмою буде десь викликано <code>abort()</code> (наприклад, якщо оператором контролю буде виявлено помилку) або якщо буде виявлено помилку сегментування, інструмент зневаджування зупинить роботу програми. З іншого боку, якщо програма зможе виконати роботу до кінця (правильно чи неправильно), інструмент зневаджування не зупинятиме її роботу, аж доки ця робота не завершиться сама. У такому разі вам можуть знадобитися встановлені ще до запуску програми точки зупину у всіх рядках коду, де інструмент зневаджування має зупиняти роботу програми. Встановити такі точки зупину можна встановленням курсора у відповідному рядку з наступним вибором пункту меню <menuchoice>Виконання -> Встановити/зняти точку зупину</menuchoice> або використанням пункту контекстного меню (викликається клацанням правою кнопкою миші) <menuchoice>Встановити/зняти точку зупину</menuchoice>. | |||
[[Image:kdevelop-4.png|center|thumb|550px]] | [[Image:kdevelop-4.png|center|thumb|550px]] | ||
Запуск програми у зневаднику переведе '''KDevelop''' у інший режим: всі кнопки інструментів на периметрі головного вікна програми буде замінено на відповідні кнопки зневаджування, а не редагування. Визначити режим, у якому працює програма можна за верхньою правою частиною вікна: там ви побачите вкладки з назвами <menuchoice>Перегляд</menuchoice>, <menuchoice>Зневаджування</menuchoice> та <menuchoice>Код</menuchoice>. Натискання заголовків цих вкладок надає змогу перемикатися між трьома режимами. У кожного з режимів є власний набір інструментів, налаштувати їхній перелік можна у такий само спосіб, у який ми налаштовували інструменти режиму <menuchoice>Код</menuchoice> у розділі [[KDevelop4/Manual/Working_with_source_code#Tools and views|Інструменти та панелі перегляду]]. | |||
Після зупинки інструмента зневаджування (у точці зупину або у точці виклику <code>abort()</code>) ви зможете вивчити різноманітні дані щодо роботи програми. Наприклад, на наведеному вище зображенні нами вибрано інструмент <menuchoice>Стек викликів</menuchoice> у нижній частині (приблизний еквівалент команд "backtrace" та "info threads" у '''gdb'''), отже показано список запущених потоків виконання ліворуч (у нашому прикладі таких потоків 8) та спосіб переходу до поточної точки зупину праворуч (у нашому прикладі <code>main()</code> викликано <code>run()</code>; список був би довшим, якби ми зупинилися у функції, викликаній з <code>run()</code>). Ліворуч можна бачити локальні змінні, зокрема поточний об’єкт (об’єкт, на який вказує змінна <code>this</code>). | |||
Після зупинки ви можете діяти у декілька способів: наказати виконати поточний рядок (<keycap>F10</keycap>, команда «next» '''gdb'''), увійти до функції (<keycap>F11</keycap>, команда «step» у '''gdb''') або виконати інструкції до кінця функції (<keycap>F12</keycap>, команда «finish» '''gdb'''). На кожному з етапів виконання '''KDevelop''' оновлюватиме значення змінних, показані ліворуч. Ви також можете просто навести вказівник миші на частину коду, наприклад, назву змінної, і '''KDevelop''' покаже поточне значення та запропонує зупинити виконання програми під час наступної зміни значення змінної. Якщо ви знайомі з '''gdb''', ви також можете натиснути кнопку інструмента <menuchoice>GDB</menuchoice> у нижній частині вікна і отримати змогу вводити команди '''gdb''' безпосередньо, наприклад, для того, щоб змінити значення змінної (у поточній версії середовища, здається, не передбачено іншого способу). | |||
<span id="Attaching the debugger to a running process"></span> | <span id="Attaching the debugger to a running process"></span> | ||
=== Приєднання програми для зневаджування до запущеного процесу === | === Приєднання програми для зневаджування до запущеного процесу === | ||
Line 19: | Line 19: | ||
[[Image:kdevelop-9.png|center|thumb|300px]] | [[Image:kdevelop-9.png|center|thumb|300px]] | ||
Іноді виникає потреба у зневаджуванні програми, яку вже запущено. Одним з випадків такої потреби є зневаджування паралельно запущених за допомогою [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()
(наприклад, якщо оператором контролю буде виявлено помилку) або якщо буде виявлено помилку сегментування, інструмент зневаджування зупинить роботу програми. З іншого боку, якщо програма зможе виконати роботу до кінця (правильно чи неправильно), інструмент зневаджування не зупинятиме її роботу, аж доки ця робота не завершиться сама. У такому разі вам можуть знадобитися встановлені ще до запуску програми точки зупину у всіх рядках коду, де інструмент зневаджування має зупиняти роботу програми. Встановити такі точки зупину можна встановленням курсора у відповідному рядку з наступним вибором пункту меню або використанням пункту контекстного меню (викликається клацанням правою кнопкою миші) .
Запуск програми у зневаднику переведе KDevelop у інший режим: всі кнопки інструментів на периметрі головного вікна програми буде замінено на відповідні кнопки зневаджування, а не редагування. Визначити режим, у якому працює програма можна за верхньою правою частиною вікна: там ви побачите вкладки з назвами Інструменти та панелі перегляду.
, та . Натискання заголовків цих вкладок надає змогу перемикатися між трьома режимами. У кожного з режимів є власний набір інструментів, налаштувати їхній перелік можна у такий само спосіб, у який ми налаштовували інструменти режиму у розділіПісля зупинки інструмента зневаджування (у точці зупину або у точці виклику abort()
) ви зможете вивчити різноманітні дані щодо роботи програми. Наприклад, на наведеному вище зображенні нами вибрано інструмент у нижній частині (приблизний еквівалент команд "backtrace" та "info threads" у gdb), отже показано список запущених потоків виконання ліворуч (у нашому прикладі таких потоків 8) та спосіб переходу до поточної точки зупину праворуч (у нашому прикладі main()
викликано run()
; список був би довшим, якби ми зупинилися у функції, викликаній з run()
). Ліворуч можна бачити локальні змінні, зокрема поточний об’єкт (об’єкт, на який вказує змінна this
).
Після зупинки ви можете діяти у декілька способів: наказати виконати поточний рядок (F10, команда «next» gdb), увійти до функції (F11, команда «step» у gdb) або виконати інструкції до кінця функції (F12, команда «finish» gdb). На кожному з етапів виконання KDevelop оновлюватиме значення змінних, показані ліворуч. Ви також можете просто навести вказівник миші на частину коду, наприклад, назву змінної, і KDevelop покаже поточне значення та запропонує зупинити виконання програми під час наступної зміни значення змінної. Якщо ви знайомі з gdb, ви також можете натиснути кнопку інструмента у нижній частині вікна і отримати змогу вводити команди gdb безпосередньо, наприклад, для того, щоб змінити значення змінної (у поточній версії середовища, здається, не передбачено іншого способу).
Приєднання програми для зневаджування до запущеного процесу
Іноді виникає потреба у зневаджуванні програми, яку вже запущено. Одним з випадків такої потреби є зневаджування паралельно запущених за допомогою MPI програм або зневаджування довготривалого фонового процесу. Виконати таке зневаджування можна за допомогою пункту меню , у відповідь на вибір якого буде відкрито вікно, подібне до наведеного вище. Вам потрібно вибрати програму, яка відповідає поточному відкритому проекту у KDevelop — у нашому випадку такою програмою буде step-32.
Цей список програм може бути доволі довгим, як у нашому прикладі. Ви можете дещо спростити собі роботу за допомогою спадного списку у верхній частині вікна. Типовим пунктом цього списку є
, тобто всі програми, запущені всіма користувачами, які працюють у системі (якщо ви працюєте за власним стаціонарним або портативним комп’ютером, ймовірно, ви є єдиним користувачем, окрім користувача root та різноманітних облікових записів служб); у списку не буде процесів користувача root. Обмежити перелік процесів можна за допомогою пункту , його вибір призведе до вилучення зі списку програм, запущених іншими користувачами. Кращим варіантом є вибір пункту , — зі списку буде вилучено багато процесів, які формально запущено від вашого імені, але які ви власноруч не запускали, зокрема програма для керування вікнами, фонові завдання тощо навряд чи є достойними кандидатами для зневаджування.Після вибору процесу, долучення до нього переведе KDevelop у режим зневаджування, відкриє всі звичайні панелі зневаджування і зупинить програму на рядку, який виконувався під час долучення. На цьому етапі доцільно встановити точки зупину, точки перегляду або налаштувати інші елементи стеження за виконанням, а потім продовжити виконання програми за допомогою пункту меню
.Деякі корисні клавіатурні скорочення
Зневаджування | |
---|---|
F10 | Перейти до наступної інструкції ("next" у gdb) |
F11 | Увійти у наступну інструкцію ("step" у gdb) |
F12 | Вийти з інструкції ("finish" у gdb) |