DWARF
DWARF — поширений формат даних налагодження. Спочатку DWARF був розроблений разом із Executable and Linkable Format (ELF), хоча він не залежить від форматів об'єктних файлів.[1] Назва є історично-фентезійним доповненням до «ELF», яке не мало офіційного значення, хоча згодом для назви було запропоновано бекронім «Debugging With Arbitrary Record Formats» («Налагодження з довільними форматами записів»).[1]
DWARF виник разом із компілятором C та налагоджувачем sdb у UNIX System V Release 4 (SVR4).[1] Інформація для налагодження, така як інформація у форматі DWARF, генерується, коли використовується параметр компілятора -g.[2]
Перша версія DWARF використовувала надмірний обсяг пам'яті, тому несумісний наступник, DWARF-2, замінив її та додав різні схеми кодування для зменшення розміру даних. DWARF не одразу отримав загальне визнання; наприклад, коли Sun Microsystems прийняла ELF у рамках переходу на Solaris, вона вирішила продовжити використовувати stabs у вбудовуванні, відомому як «stabs-in-elf». Linux наслідував цей підхід, і DWARF-2 не став типовим форматом до кінця 1990-х років.
Робоча група DWARF при Free Standards Group випустила версію 3 DWARF у січні 2006 року,[3] додавши, серед іншого, підтримку просторів імен C++, даних allocatable у Fortran 90 та додаткових методів оптимізації компілятора.
Комітет DWARF опублікував версію 4 DWARF, яка пропонує «покращене стиснення даних, кращий опис оптимізованого коду та підтримку нових мовних можливостей у C++», у 2010 році.[4]
Версію 5 формату DWARF було опубліковано в лютому 2017 року.[5][6] Вона «містить удосконалення в багатьох областях: краще стиснення даних, відокремлення даних налагодження від виконуваних файлів, покращений опис макросів і вихідних файлів, швидший пошук символів, покращене налагодження оптимізованого коду, а також численні покращення функціональності та продуктивності».
Libdwarf — це бібліотека, яка надає доступ до інформації для налагодження DWARF у виконуваних та об'єктних файлах.[7]
elfutils містить інструменти для роботи із секціями ELF, наприклад для об'єднання інформації для налагодження у файл або її виділення в окремий файл.
- 1 2 3 Michael J. Eager (Квітень 2012). Introduction to the DWARF Debugging Format (PDF). Процитовано 8 січня 2015.
- ↑ Debugging Options (Using the GNU Compiler Collection (GCC)). gcc.gnu.org.
- ↑ DWARF Version 3 Standard Released (Пресреліз). Free Standards Group. 4 січня 2006. Архів оригіналу за 25 липня 2011. Процитовано 25 червня 2007.
- ↑ DWARF Version 4 Released. The DWARF committee. 16 червня 2010. Архів оригіналу за 30 липня 2020. Процитовано 24 червня 2010.
- ↑ DWARF Version 5 Standard Released. The DWARF committee. 15 лютого 2017. Процитовано 7 серпня 2017.
- ↑ DWARF 5 Standard. The DWARF committee. 15 лютого 2017. Процитовано 7 серпня 2017.
- ↑ libdwarf: A Consumer Library Interface to DWARF. www.prevanders.net. Процитовано 6 грудня 2023.
- Офіційний сайт
- 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