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