Кіріспе

Стандартталған жөндеу деректері форматы

DWARF – кеңінен қолданылатын стандартталған жөндеу деректері форматы. DWARF бастапқыда орындалатын және сілтемеленетін форматпен (ELF) бірге әзірленген, бірақ ол объект файл пішімдеріне тәуелсіз. Атауы "ELF" ортағасырлық фантастикалық толықтыру болып табылады, оның ресми мағынасы жоқ, алайда "Debugging With Arbitrary Record Formats" атауы кейіннен ретроним ретінде ұсынылды. Ол C++ кеңістіктерін, Fortran 90 деректерін және компилятордың қосымша оңтайландыру техникаларын қолдауды қамтиды (басқалармен қатар). DWARF комитеті 2010 жылы "жақсартылған деректерді қысу, оңтайландырылған кодты жақсы сипаттау және C++ тіліндегі жаңа мүмкіндіктерге қолдау" ұсынатын DWARF 4-ші нұсқасын жариялады. DWARF форматының 5-ші нұсқасы 2017 жылдың ақпан айында жарияланды. Ол "көптеген салалардағы жақсартуларды қамтиды: деректерді жақсы қысу, жөндеу деректерін орындалатын файлдардан бөлу, макростар мен бастапқы файлдарды жақсарту, символдарды жылдам іздеу, оңтайландырылған кодты жөндеу, сондай-ақ функционалдық және өнімділік бойынша көптеген жақсартулар".

Құрылымы

DWARF әрбір айнымалыны, типін, процедураны және т.б. бейнелеу үшін Дебьюгтік ақпарат жазуы (DIE) деп аталатын дерек құрылымын пайдаланады. DIE тегтерге (мысалы, , , ) және атрибуттарға (кілт-мәнді жұптар) ие. DIE-лерде ішкі (бала) DIE-лер ұяластырылып, ағаш тәрізді құрылымды құруы мүмкін. DIE атрибуты ағаштың кез келген жеріндегі басқа DIE-ге сілтеме жасай алады, мысалы, айнымалыны көрсететін DIE, айнымалының типін сипаттайтын DIE-ге сілтеме жасайтын жазбаға ие болады. Орынды үнемдеу үшін, символдық жөндеушілерге қажетті екі үлкен кесте қарапайым, арнайы мақсаттағы шекті күйдегі автоматтары үшін байт кодталған нұсқаулар түрінде ұсынылады. Код орналасқан жерлерді бастапқы код орналасқан жерлерге және керісінше карталайтын Тізім нөмірі кестесі, сонымен қатар функцияның прологтары мен эпилогтарының қай нұсқаулар екенін көрсетеді. Шақыру кадры туралы ақпарат кестесі жөндеушілерге шақыру стегіндегі кадрларды табуға мүмкіндік береді. DWARF жөндеу туралы ақпарат, жөндеу кадрлары сияқты әртүрлі бөлімдерге бөлінген.

Құралдар

Libdwarf – орындалатын файлдар мен объект файлдарындағы DWARF нысанындағы қателерді жою туралы ақпаратқа қол жеткізуді қамтамасыз ететін кітапхана.