DWARF - DWARF

DWARF широко используемый, стандартизированный формат данных отладки. DWARF изначально разрабатывался вместе с Исполняемый и связываемый формат (ELF), хотя он не зависит от объектный файл форматы.[1] Имя это средневековая фантазия дополнение к "ELF", не имеющее официального значения, хотя backronym Позднее была предложена «Отладка с помощью форматов записи с атрибутами».[1]

История

Первая версия DWARF доказала, что использует чрезмерные объемы памяти, и несовместимый преемник DWARF-2 заменил ее и добавил различные схемы кодирования для уменьшения размера данных. DWARF не сразу получил всеобщее признание; например, когда Sun Microsystems приняли ELF как часть своего перехода на Солярис, они решили продолжить использование удары, во вложении, известном как "удары в эльфа". Linux последовали их примеру, и DWARF-2 не использовался по умолчанию до конца 1990-х годов.

Рабочая группа DWARF Группа Свободных Стандартов выпустила DWARF версии 3 в январе 2006 г.,[2] добавление (среди прочего) поддержки C ++ пространства имен, Фортран 90 распределяемый данные и дополнительные оптимизация компилятора техники.

Комитет DWARF опубликовал версию 4 DWARF, которая предлагает «улучшенное сжатие данных, лучшее описание оптимизированного кода и поддержку новых языковых функций в C ++» в 2010 году.[3]

Версия 5 формата DWARF была опубликована в феврале 2017 года.[4][5] Он «включает улучшения во многих областях: лучшее сжатие данных, отделение отладочных данных от исполняемых файлов, улучшенное описание макросов и исходных файлов, более быстрый поиск символов, улучшенная отладка оптимизированного кода, а также многочисленные улучшения функциональности и производительности».

Структура

DWARF использует структуру данных, называемую вводом отладочной информации (DIE), для представления каждой переменной, типа, процедуры и т. Д. DIE имеет тег (например, DW_TAG_variable, DW_TAG_pointer_type, DW_TAG_subprogram) и атрибуты (пары ключ-значение). Матрица может иметь вложенные (дочерние) матрицы, образующие дерево структура. Атрибут DIE может относиться к другому DIE в любом месте дерева - например, DIE, представляющий переменную, будет иметь DW_AT_type запись, указывающая на DIE, описывающую тип переменной.

Для экономии места две большие таблицы, необходимые для символьных отладчиков, представлены как с байтовым кодом инструкции для простых, специализированных конечные автоматы. Таблица номеров строк, которая сопоставляет местоположения кода с местоположениями исходного кода и наоборот, также указывает, какие инструкции являются частью прологи функций и эпилоги. Таблица информации о кадрах вызова позволяет отладчикам находить кадры на стек вызовов.

дальнейшее чтение

Майкл Игер, председатель комитета по стандартам DWARF, написал введение в форматы отладки и DWARF 3, Введение в формат отладки DWARF.[1]

использованная литература

  1. ^ а б c Майкл Дж. Игер (апрель 2012 г.). «Введение в формат отладки DWARF» (PDF). Получено 2015-01-08.
  2. ^ «Выпущен стандарт DWARF версии 3» (Пресс-релиз). Группа свободных стандартов. 4 января 2006 г.. Получено 2007-06-25.
  3. ^ «Выпущена версия 4 DWARF». Комитет DWARF. 16 июня 2010 г.. Получено 2010-06-24.
  4. ^ «Выпущен стандарт DWARF версии 5». Комитет DWARF. 15 февраля 2017 г.. Получено 2017-08-07.
  5. ^ «DWARF 5 Стандарт». Комитет DWARF. 15 февраля 2017 г.. Получено 2017-08-07.

внешние ссылки