Интерфейс отладчика отладчик Для 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 только после загрузки необходимой библиотеки. Включить плавающую панель панель инструментов отладчика панель инструментовотладчик (... в процессе написания ...)