Глава 7. Отладка программ в KDevelop

Запуск программы в отладчике

После настройки запуска программы (смотрите раздел Запуск программ) также можно запустить её в отладчике: выберите пункт меню ВыполнениеНачать отладку или воспользуйтесь комбинацией клавиш Alt+F9. Результат будет аналогичен запуску 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, расположенную в нижней части окна, и ввести нужные команды gdb, например, чтобы изменить значение переменной (в текущей версии среды не предусмотрено другого способа сделать это).