Jump to content

Карлик

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

DWARF возник на основе компилятора C и отладчика sdb в Unix System V Release 4 (SVR4). [1]

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

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

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

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

Структура

[ редактировать ]

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

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

DWARF разделен на разные разделы, такие как .debug_info , [6] .debug_frame и т. д.

Инструменты

[ редактировать ]

Libdwarf — это библиотека, предоставляющая доступ к отладочной информации DWARF в исполняемых файлах и объектных файлах. [7]

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

[ редактировать ]

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

  1. ^ Jump up to: а б с д Майкл Дж. Игер (апрель 2012 г.). «Введение в формат отладки DWARF» (PDF) . Проверено 8 января 2015 г.
  2. ^ «Выпущена стандартная версия DWARF 3» (пресс-релиз). Группа свободных стандартов. 4 января 2006 г. Архивировано из оригинала 25 июля 2011 г. Проверено 25 июня 2007 г.
  3. ^ «Выпущена версия DWARF 4» . Комитет DWARF. 16 июня 2010 г. Архивировано из оригинала 30 июля 2020 г. Проверено 24 июня 2010 г.
  4. ^ «Выпущена стандартная версия DWARF 5» . Комитет DWARF. 15 февраля 2017 года . Проверено 7 августа 2017 г.
  5. ^ «Гном 5 Стандарт» . Комитет DWARF. 15 февраля 2017 года . Проверено 7 августа 2017 г.
  6. ^ .debug_info документация IBM
  7. ^ «libdwarf: интерфейс потребительской библиотеки для DWARF» . www.prevanders.net . Проверено 6 декабря 2023 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 709b48e594da04cbdd787360f4960420__1704344100
URL1:https://arc.ask3.ru/arc/aa/70/20/709b48e594da04cbdd787360f4960420.html
Заголовок, (Title) документа по адресу, URL1:
DWARF - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)