LLDB

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

LLDB
Тип зневаджувач
Розробник LLVM Developer Group
Версії 12.0.0 (14 квітня 2021)[1]
Репозиторій github.com/llvm/llvm-project
Операційна система Mac OS X i386 та x86-64, Linux, FreeBSD
Мова програмування C++
Ліцензія University of Illinois/NCSA Open Source License[2]
Вебсайт lldb.llvm.org

Сирцевий код поширюються під 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 для використання можливостей системи в сторонніх проектах.

Виноски

Посилання

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.