LLDB — зневаджувач, заснований на технологіях проекту LLVM. LLDB являє собою інфраструктуру для організації зневадження застосунків і складається з набору модулів і бібліотек, які використовують такі підсистеми LLVM як API для дизасемблювання, Clang AST (Abstract Syntax Tree), парсер виразів, генератор коду і JIT-компілятор. Підтримується зневадження програм на мовах C, Objective-C і C++.

Початковий код поширюються під BSD-подібною ліцензією.

LLDB дозволяє зневаджувати багатонитеві програми, дизасемблювати машинний код для архітектур i386, x86-64 і ARM, здійснювати трекінг поділюваних бібліотек, використовувати декілька видів точок зупину (за заданим символом, за рядком у початкових текстах, за С++ іменами, за межами входження в модулі) та автоматизувати роботу за допомогою скриптів.

У порівнянні з GDB зневаджувач LLDB відрізняється значно більшою швидкодією при зневадженні програм великого розміру.

Цілі проекту Можливість обробки "важких випадків", таких як розбір виразів на мові C++, обробка перевантаження операторів, робота з шаблонами, зневадження багатонитевих програм та інші нетривіальні сценарії зневадження Створення набору бібліотек для інтегрованих середовищ розробки, набору утиліт для роботи в командному рядку та аналітичних інструментів Висока ефективність використання пам'яті при зневадженні Розширюваність, можливість підключення плаґінів і скриптів на мові Python для автоматизації виконання рутинних операцій Повторне використання існуючих технологій компіляторів, там де це має сенс Первинна підтримка зневадження багатонитевих програм та мов C, Objective-C і C++ Легка адаптація для підтримки різних платформ Підготовка бази для подальших досліджень та інновацій в галузі зневадження програм.

Базові можливості Реалізація у вигляді плагінів: Парсери об'єктних файлів, зараз підтримуються формати Mach-O (32/64-bit) і ELF (32-bit); Парсери контейнерів об'єктів для виділення об'єктних файлів, об'єднаних в єдиний архів. Підтримуються універсальні Mach-O-файли й BSD-архіви; Парсери зневаджувальної інформації, підтримуються таблиці символів DWARF і Mach-O; Плагіни для збору зневаджувальних символів з різних зовнішніх джерел; Плагіни для дизасемблювання коду для різних архітектур. Згенеровані за допомогою SWIG скрипти, що дозволяють отримати коду мовою Python доступ до керуючого зневаджувального API; Серверний процес debugserver, що дозволяє організувати зневадження коду на віддаленому сервері Зневаджувач, що працює в режимі командного рядка API для використання можливостей системи в сторонніх проектах.

Виноски

Посилання