DWARF - DWARF - Wikipedia
эта статья слишком полагается на использованная литература к основные источники.Июль 2017 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
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]
использованная литература
- ^ а б c Майкл Дж. Игер (апрель 2012 г.). «Введение в формат отладки DWARF» (PDF). Получено 2015-01-08.
- ^ «Выпущен стандарт DWARF версии 3» (Пресс-релиз). Группа свободных стандартов. 4 января 2006 г.. Получено 2007-06-25.
- ^ «Выпущена версия 4 DWARF». Комитет DWARF. 16 июня 2010 г.. Получено 2010-06-24.
- ^ «Выпущен стандарт DWARF версии 5». Комитет DWARF. 15 февраля 2017 г.. Получено 2017-08-07.
- ^ «DWARF 5 Стандарт». Комитет DWARF. 15 февраля 2017 г.. Получено 2017-08-07.
внешние ссылки
- Официальный веб-сайт
- Либдварф, библиотека C, предназначенная для упрощения чтения (и записи) приложений с использованием DWARF2, DWARF3.
- elfutils, другая библиотека C для обработки файлов ELF / DWARF.
- Как работают отладчики: Часть 3 - Отладочная информация
- Форматы отладки DWARF и STAB