DWARF — поширений формат даних налагодження. Спочатку DWARF був розроблений разом із Executable and Linkable Format (ELF), хоча він не залежить від форматів об'єктних файлів. Назва є історично-фентезійним доповненням до «ELF», яке не мало офіційного значення, хоча згодом для назви було запропоновано бекронім «Debugging With Arbitrary Record Formats» («Налагодження з довільними форматами записів»).
DWARF виник разом із компілятором C та налагоджувачем sdb у UNIX System V Release 4 (SVR4). Інформація для налагодження, така як інформація у форматі DWARF, генерується, коли використовується параметр компілятора -g.
Історія
Перша версія DWARF використовувала надмірний обсяг пам'яті, тому несумісний наступник, DWARF-2, замінив її та додав різні схеми кодування для зменшення розміру даних. DWARF не одразу отримав загальне визнання; наприклад, коли Sun Microsystems прийняла ELF у рамках переходу на Solaris, вона вирішила продовжити використовувати stabs у вбудовуванні, відомому як «stabs-in-elf». Linux наслідував цей підхід, і DWARF-2 не став типовим форматом до кінця 1990-х років.
Робоча група DWARF при Free Standards Group випустила версію 3 DWARF у січні 2006 року, додавши, серед іншого, підтримку просторів імен C++, даних у Fortran 90 та додаткових методів оптимізації компілятора.
Комітет DWARF опублікував версію 4 DWARF, яка пропонує «покращене стиснення даних, кращий опис оптимізованого коду та підтримку нових мовних можливостей у C++», у 2010 році.
Версію 5 формату DWARF було опубліковано в лютому 2017 року. Вона «містить удосконалення в багатьох областях: краще стиснення даних, відокремлення даних налагодження від виконуваних файлів, покращений опис макросів і вихідних файлів, швидший пошук символів, покращене налагодження оптимізованого коду, а також численні покращення функціональності та продуктивності».
Інструменти
Libdwarf — це бібліотека, яка надає доступ до інформації для налагодження DWARF у виконуваних та об'єктних файлах.
elfutils містить інструменти для роботи із секціями ELF, наприклад для об'єднання інформації для налагодження у файл або її виділення в окремий файл.
Примітки
Посилання
Libdwarf, a C library intended to simplify reading (and writing) applications using DWARF2, DWARF3. elfutils, another C library for ELF/DWARF file processing. How debuggers work: Part 3 - Debugging information Debugging formats DWARF and STAB