Интерфейс отладчика
отладчик
Для C и C++ &tdevelop; содержит встроенный отладчик, интегрированный с редактором. Технически это реализовано как внешний интерфейс для отладчика &GNU; gdb через каналы (pipe). Отладчик можно запустить несколькими способами:
Через пункт меню ОтладкаЗапуск, после чего в отладчик загрузится главная программа вашего проекта.
Через пункт меню Отладка Запуск другого Загрузить файл core загрузится core-файл, генерируемый ядром системы после сбоя программы (это может быть выключено в вашей системе, см. ulimit(1)). Эта отладка полезна для анализа сбоев программы.
Через пункт меню Отладка Запуск другого Присоединить к процессу отладчик подстроится к уже запущенной программе. Вам нужно будет выбрать её из списка запущенных процессов.
Помните, что отладка возможна только если программа была скомпилирована с информацией для отладки. Это можно установить в диалоге Параметры компилятора. Информация для отладки помогает найти соответствие между именами файлов, строчками и адресами в программе.
Отладчик предлагает несколько видов информации о процессе:
При попытке запуска отладки проекта без отладочной информации вы получите сообщение Нет исходного кода... в строке состояния. При установке точки останова, она будет показана в панели точек останова как В ожидании (добавление) (см. ниже).
Переменные
наблюдать переменные
Окно содержит список значений всех локальных переменных на текущей точке выполнения.
Можно наблюдать как локальные, так и глобальные переменные. Добавить переменную можно либо нажатием кнопки Добавить, либо нажатием клавиши Enter на выбранном пункте Наблюдение. Удалить их можно через контекстное меню.
Фреймовый стек
фреймовый стек
(... в процессе написания ...)
Точки останова
точки останова
Данная панель позволяет просматривать и управлять точками останова. Для непосредственной отладки используется GDB, так что для полного понимания всех возможностей отладки &tdevelop; необходимо базовое представление о принципе работы GDB.
Исходный код, содержащий определение точек останова, находится в файле tdevelop/languages/cpp/debugger/breakpoint.h.
На левом краю панели имеются кнопки со следующими функциями:
Добавление пустой точки останова
Изменение выбранной точки останова
Удаление выбранной точки останова
Удаление всех точек останова
Основная часть панели - таблица с 7 столбцами. Каждой строке таблицы соответствует одна точка останова. Столбцы:
Переключатель для выбора точек
Тип: Ошибка, Файл:строка, Точка наблюдения, Адрес или Метод
Статус:
Разрешена
Запрещена: если точка останова запрещена, при отладке она пропускается.
В ожидании (добавление): показывается при отсутствии отладочной информации. Из info-страницы GDB: Если указанное расположение точки останова найти не удалось, это может быть из-за того, что библиотека, в которой оно находится, ещё не загружена. В этом случае можно создать особую точку останова (pending breakpoint
), действие которой откладывается до хагрухки необходимой библиотеки.
В ожидании (очистка)
В ожидании (изменение)
Расположение в формате файл:строка
Условие
Счётчик игнорирования: если число N больше нуля, то в первые N раз при достижении точки останова выполнение программы остановленр не будет.
Попадания: количество достижений точки останова.
Дизассемблирование
дизассемблирование
(... в процессе написания ...)
Установка точек останова
(... в процессе написания ...)
Параметры
Отобразить обработанные имена
обработка имён
mangleимя
В программе, написанной на C++, имена функций изменяются (mangled
), то есть к начальному имени функции добавляется информация о типах аргументов, которые она принимает. Это необходимо для перегрузки (overload) функций. Алгоритм такой обработки не стандартизован и имеет различные реализации даже в разных версиях компилятора &GNU; C++.
В окне дизассемблирования отображаются не изменённые имена, однако это можно изменить.
Попробуйте установку точек останова по загрузке библиотеки
"ленивые" точки останова
точки остановаlazy
Отладчик gdb не разрешает устанавливать точки останова в коде, не загруженном в данный момент. В приложении с модульной структурой, где код загружается только по требованию (через функцию libc dlopen(3)). Возможность установки точек останова в библиотеках предоставляет &tdevelop;. Таким образом, точки останова ставятся в своеобразную очередь и передаются gdb только после загрузки необходимой библиотеки.
Включить плавающую панель
панель инструментов отладчика
панель инструментовотладчик
(... в процессе написания ...)