Представлен LLDB - новый отладчик, развиваемый под эгидой проекта LLVM

Анонсировано появление нового отладчика 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 для использования в сторонних проектах возможностей системы.

©  OpenNet