Анонсировано появление нового отладчика LLDB, основанного на технологиях проекта LLVM. LLDB представляет собой инфраструктуру для организации отладки приложений и состоит из набора модулей и библиотек, использующих такие подсистемы LLVM как API для дизассемблирования, Clang AST (Abstract Syntax Tree), парсер выражений, генератор кода и JIT-компилятор. Исходные тексты проекта распространяются под BSD-подобной лицензией. В настоящий момент поддерживается отладка программ на языках C, Objective-C и C++ на платформе Mac OS X.
Так как LLDB еще находится на начальной стадии разработки, отладчик поддерживает только простейший набор сценариев отладки в режиме командной строки, но уже позволяет отлаживать многопоточные программы, дизассемблировать машинный код для архитектур i386, x86-64 и ARM, осуществлять трекинг разделяемых библиотек, использовать несколько видов точек останова (по заданному символу, по строке в исходных текстах, по С++ именам, по границам вхождения в модули) и автоматизировать работу при помощи скриптов.
По сравнению с GDB новый отладчик отличается значительно более высоким быстродействием при отладке программ большого размера. Также в будущем разработчики намерены обеспечить в LLDB более удобный интерфейс для отладки и улучшенную поддержку языка C++. В качестве мотивов, побудивших создать новый отладчик, называется желание воплотить в жизнь новую эффективную архитектуру, поддерживающую работу с современными многопоточными программами, поддерживающую плагины и учитывающую в работе информацию о коде "из рук" компилятора. Дополнительно учитывалась возможность интеграции средств отладки в сторонние аналитические инструменты, без жестких лицензионных ограничений (для сравнения, при интеграции кода GDB в другие проекты, код этих проектов должен распространяться только под лицензией GDB).
Цели проекта:
- Возможность обработки "трудных случаев", таких как разбор выражений на языке C++, обработка перегрузки операторов, работа с шаблонами, отладка многопоточных программ и другие нетривиальные сценарии отладки.
- Создание набора библиотек для интегрированных сред разработки, набора утилит для работы в командной строке и аналитических инструментов;
- Высокая эффективность использования памяти при отладке;
- Расширяемость, возможность подключения расширяющих функциональность плагинов и скриптов на языке Python для автоматизации выполнения рутинных операций;
- Повторное использование существующих технологий компиляторов, там где это имеет смысл;
- Первичная поддержка отладки многопоточных программ и языков C, Objective-C и C++;
- Легкая адаптация для поддержки различных платформ;
- Подготовка базы для дальнейших исследований и инноваций в области отладки программ.
Базовые возможности:
- Реализация в виде плагинов:
- Парсеры объектных файлов, в настоящий момент поддерживаются форматы Mach-O (32/64-bit) и ELF (32-bit);
- Парсеры контейнеров объектов для выделения объектных файлов, объединенных в единый архив. Поддерживаются универсальные Mach-O-файлы и BSD-архивы;
- Парсеры отладочной информации, поддерживаются таблицы символов DWARF и Mach-O;
- Плагины для сбора отладочных символов из различных внешних источников;
- Плагины для дизассемблирования кода для различных архитектур. В настоящее время поддерживаются архитектуры i386, x86-64 и ARM/Thumb;
- Сгенерированные при помощи SWIG скрипты, позволяющие получить коду на языке Python доступ к управляющему отладочному API;
- Серверный процесс debugserver, позволяющий организовать отладку кода на удаленном сервере;
- Отладчик, работающий в режиме командной строки;
- API для использования возможностей системы в сторонних проектах.
|